Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby on Rails: How do you explicitly define plural names and singular names in Rails?

For example, I'm using "Bonus" as my model, so I'd expect "bonuses" to be the plural form and "bonus" to be the singular form.

However, in Ruby, this results in:

"bonus".pluralize # bonus
"bonuses".singularize # bonuse

So, when I do a "has_many :bonuses", for example, it doesn't use the Bonus.rb model (since Ruby expects a Bonuse.rb model instead). Is there a way to correct that in Ruby on Rails somehow such that "bonuses" acts as the plural form for the model bonus.rb?

like image 659
sjsc Avatar asked Aug 19 '10 01:08

sjsc


3 Answers

In config/initializers, you will find a file called inflections.rb. There are some instructions in here, but you will want something along the lines of:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'bonus', 'bonuses'
end
like image 165
Peter Brown Avatar answered Oct 18 '22 02:10

Peter Brown


Just to back up bcarlso, more on Inflector can be found here:

http://4loc.wordpress.com/2009/04/09/inflector-rails-pluralization/

Note that the position of the Inflector.inflections block is important and, as noted in the link reference, must be after the Initializer.run block.

like image 39
Warren Avatar answered Oct 18 '22 04:10

Warren


I believe you use the Inflector in your environment.rb (memory's a bit sketchy though) If I remember correctly you put it in a block

Inflector.inflections { | i | i.irregular 'bonus', 'bonuses' }
like image 1
bcarlso Avatar answered Oct 18 '22 02:10

bcarlso