【问题标题】:Ruby-on-Rails Model Naming Covention QueryRuby-on-Rails 模型命名约定查询
【发布时间】:2014-12-18 11:22:14
【问题描述】:

在 Rails 项目中,我将模型命名为“Alumni”,但根据 Rails 约定,模型应该是单数形式,而数据库中的表应该是复数形式。但是现在我已经将模型命名为 Alumni,数据库中的表的名称是什么? PS - 我正在使用 POSTGRESQL

【问题讨论】:

  • 运行 db:migrate 并找出答案?检查变形?
  • 我现在想知道我已经将数据库命名为 Alumni 目前数据库的名称是什么以及重置名称的过程提前谢谢

标签: ruby-on-rails database postgresql model


【解决方案1】:

据我所知,'alumni' 是 'alumnus' 的复数形式,但它是不规则的,所以我认为你能做的最好的是:

a) 将您的模型命名为 Alumnus b) 将您的表命名为alumni c) 在变形器中定义不规则:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'alumnus', 'alumni'
end

但是,如果您不想重建数据模型并且想坚持使用Alumni 模型名称,则应该为您的表命名:

'alumni'.pluralize
# => "alumnis"

【讨论】:

  • 为使用 Inflector 点赞。
  • @user3656952 我的回答对你有帮助吗?
  • 是的,我同意我已经默认约定的事实,但是我在没有注意到这一点的情况下取得了显着的进步,现在恢复会占用很多时间。那么,您能否告诉我在不返回的情况下该怎么做。另外如何查看校友模型表的名称?再问一问什么是变形器以及如何使用它?
  • @user3656952 设置模型的表名。请参阅 Rails AR 文档。
  • @MarekLipka - 请您解释一下变形器或重定向到任何资源。
【解决方案2】:

如果您将模型命名为“Alumni”,则数据库中的表名称将为“alumnis”:

rails c
> class Alumni < ActiveRecord::Base
> end
> Alumni.table_name
=> "alumnis"

【讨论】:

    【解决方案3】:
    Alunmi : Alumnus :: Plural : Singular
    

    模型名称必须为Alumnus,表名称必须为Alumni。 (未针对 Rails 中的约定进行测试)

    您仍然可以对模型和表格使用Alumni,并在模型中指定set_table_name 'alumni'

    编辑:如果您的模型名称是Alumni 并且表名也相同,那么在alumni.rb 文件中:

    # Since you have not specified Rails version, then
    ## Rails 3.2+ and 4
    class Alumni < ActiveRecord::Base
      self.table_name = 'alumni'
      # your other code
    end
    
    ## Rails 3.1 and below
    class Alumni < ActiveRecord::Base
      set_table_name 'alumni'
      # your other code
    end
    

    HTH

    【讨论】:

    • 默认不起作用,'alumnus'.pluralize 返回'alumnus'
    • 如何设置表名,请告诉我过程
    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2018-07-07
    相关资源
    最近更新 更多