【问题标题】:How do I explicitly specify a Model's table-name mapping in Rails?如何在 Rails 中明确指定模型的表名映射?
【发布时间】:2011-01-06 09:44:42
【问题描述】:

我有一个名为 Country 的模型类,我希望它映射到一个名为“cc”的数据库表。

在 Rails 中是如何做到的?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    Rails >= 3.2(包括 Rails 4+ 和 5+):

    class Countries < ActiveRecord::Base
      self.table_name = "cc"
    end
    

    导轨
    class Countries < ActiveRecord::Base
      self.set_table_name "cc"
      ...
    end
    

    【讨论】:

    • 为每个模型指定table_name 是最佳做法吗?
    • @MikeC - 不。这是尽可能简短的 Rails 方式,并且仅在覆盖约定时才编写代码。
    • @SungWonCho 在每个模型上指定表名并不是最佳实践,只有在您需要不同的表名时才使用它
    • 请注意,此分配忽略了table_name_prefix。如果您有一套,请使用self.table_name = "#{table_name_prefix}cc"
    【解决方案2】:
    class Countries < ActiveRecord::Base
        self.table_name = "cc"
    end
    

    在 Rails 3.x 中,这是指定表名的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多