Rails中的非标准复数

Dav*_*nes 2 database-design model ruby-on-rails pluralize

可能重复:
如何覆盖rails命名约定?

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

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

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

Could not find table 'lens'
Run Code Online (Sandbox Code Playgroud)

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

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

aNo*_*ble 6

你应该有一个config/initializers/inflections.rb文件,你可以做类似的事情.

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'lens', 'lenses'
end
Run Code Online (Sandbox Code Playgroud)