【问题标题】:Ruby on Rails: How do you explicitly define plural names and singular names in Rails?Ruby on Rails:如何在 Rails 中明确定义复数名称和单数名称?
【发布时间】:2026-02-13 22:10:01
【问题描述】:

例如,我使用“Bonus”作为模型,所以我希望“bonus”是复数形式,而“bonus”是单数形式。

但是,在 Ruby 中,这会导致:

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

因此,例如,当我执行“has_many :bonuses”时,它不使用 Bonus.rb 模型(因为 Ruby 需要一个 Bonuse.rb 模型)。有没有办法在 Ruby on Rails 中以某种方式纠正这个问题,使“bonuses”充当模型 bonus.rb 的复数形式?

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

在 config/initializers 中,您会找到一个名为 inflections.rb 的文件。这里有一些说明,但你会想要一些类似的东西:

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

【讨论】:

  • 大声笑,我实际上是想使用“奖金”!
  • 哈——这里也一样!
【解决方案2】:

只是为了备份 bcarlso,更多关于 Inflector 的内容可以在这里找到:

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

请注意,Inflector.inflections 块的位置很重要,并且如链接参考中所述,必须在 Initializer.run 块之后

【讨论】:

  • 非常感谢沃伦的链接
【解决方案3】:

我相信你在你的 environment.rb 中使用了 Inflector(虽然记忆有点粗略) 如果我没记错的话,你把它放在一个块里

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

【讨论】: