Ruby on Rails:如何在Rails中明确定义复数名称和单数名称?

例如,我使用“奖金”作为我的模型,所以我希望“奖金”是复数forms,“奖金”是单数forms。

但是,在Ruby中,这导致:

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

所以,当我做一个“has_many:奖金”,例如,它不使用Bonus.rb模型(因为Ruby期望一个Bonuse.rb模型)。 有没有办法纠正在Ruby on Rails的某种程度上,“奖金”作为模型bonus.rb的复数forms?

在config / initializers中,你会发现一个名为inflections.rb的文件。 这里有一些说明,但你会想要的东西沿线:

 ActiveSupport::Inflector.inflections do |inflect| inflect.irregular 'bonus', 'bonuses' end 

只是为了备份bcarlso,更多关于Inflector可以在这里find:

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

请注意,Inflector.inflections块的位置很重要,如链接引用中所述,必须 Initializer.run块之后。

我相信你在你的environment.rb中使用了Inflector(内存有点简单)如果我没有记错,你把它放在一个块

 Inflector.inflections { | i | i.irregular 'bonus', 'bonuses' }