2

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

在 Rails 中生成新模型时,它会自动将表名复数。然而,这并不总是奏效——尤其是对于具有非标准复数形式的单词。

我创建了一个名为lens. 因为 rails 认为这个词已经是复数形式了,所以它没有复数迁移文件中的表名。没问题 - 我只是在运行迁移之前编辑了文件并更改lens为。lenses

不幸的是,在尝试实例化 Lens 类时出现此错误:

Could not find table 'lens'

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

那我该怎么办?我应该打破惯例,让 Rails 调用 tablelens而不是lenses,还是有办法正确配置它?

4

1 回答 1

6

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

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'lens', 'lenses'
end
于 2012-11-23T07:49:58.767 回答