【问题标题】:Rails creating wrong table name for modelRails 为模型创建错误的表名
【发布时间】:2013-03-21 01:34:41
【问题描述】:
我正在使用rails g model Stadium 创建一个名为Stadium 的模型,但rails 正在将表名转换为stadia。
我在迁移中手动将表名更改为stadium,并在我的模型类中添加了set_table_name "stadium"。但我所有的路线都在寻找stadia_path。
我试过rails g model Stadium --force-plural 没有成功。
我认为我应该为此使用变形,但我不知道如何创建这种变形。 Stadium 是单数,这个模型我还是需要复数的 Stadium。
【问题讨论】:
标签:
ruby-on-rails
naming-conventions
【解决方案1】:
对于变形,您必须在 config/initializers/inflections.rb 中使用类似的内容:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'stadium', 'stadiums'
end
希望对你有帮助!
【解决方案2】:
字典上说“stadiums”和“stadia”都是正确的(鉴于这个词是拉丁语,“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
然后运行迁移,一切就绪!