Rails中的非标准复数

时间:2012-11-23 07:37:42

标签: ruby-on-rails database-design model pluralize

  

可能重复:
  How do I override rails naming conventions?

在Rails中生成新模型时,它会自动复数表名。但是,这并不总是很好 - 特别是对于具有非标准复数的单词。

我创建了一个名为lens的模型。由于rails认为这个词已经多元化,因此它没有在迁移文件中复数表名。没问题 - 我刚刚编辑了该文件,并在运行迁移之前将lens更改为lenses

不幸的是,我在尝试实例化Lens类时遇到了这个错误:

Could not find table 'lens'

我假设这是因为Rails认为这个词已经是多元化的,所以在尝试在数据库中查找表时,它不会尝试复数。

那我该怎么办?我是否应该违反惯例并让Rails调用表lens而不是lenses,或者有没有办法正确配置?

1 个答案:

答案 0 :(得分:6)

您应该有一个config/initializers/inflections.rb文件,您可以在其中执行类似的操作。

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'lens', 'lenses'
end