Rails为模型创建错误的表名

时间:2013-03-30 12:47:23

标签: ruby-on-rails naming-conventions

我正在使用Stadium创建名为rails g model Stadium的模型,但rails正在将表名转换为stadia

我在迁移中手动将表名更改为stadium,并在我的模型类中添加了set_table_name "stadium"。但我所有的路线都在寻找stadia_path

我尝试rails g model Stadium --force-plural但没有成功。

我想我应该使用一个变形,但我不知道如何创建这个变形。体育场是单一的,我仍然需要这个模型的复数体育场。

2 个答案:

答案 0 :(得分:10)

字典说“体育场”和“体育馆”都是正确的(假设这个词是拉丁语,“stadia”作为以-um结尾的中性词的复数似乎是合法的。)

只需将其添加到config / initializers / inflections.rb:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'stadium', 'stadiums'
end

您可以在这里设置各种不规则复数。

通过

摧毁你的老一代
rails d model Stadium

再次生成

rails g model Stadium

你会看到它如何神奇地创建这样的文件:

db/migrate/20130330130335_create_stadiums.rb

然后运行迁移,你就完成了设置!

答案 1 :(得分:2)

对于变形,您必须在config/initializers/inflections.rb

中进行类似的操作
ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'stadium', 'stadiums'
end
希望它有所帮助!