【问题标题】: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
    

    然后运行迁移,一切就绪!

    【讨论】:

    • 不错的答案!感谢您的详细解释:)
    猜你喜欢
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2012-02-11
    • 1970-01-01
    相关资源
    最近更新 更多