【问题标题】:rails one base class, two models and two db tablesrails 一个基类,两个模型和两个数据库表
【发布时间】:2013-04-11 23:28:34
【问题描述】:

我想创建两个结构几乎相同的模型。但我想将数据集保存在两个不同的表中。这可能在活动记录中吗?

不同表的原因是因为我希望查询不返回任何有意义的结果,例如“不存在具有这些属性的活动模型......”或“不存在具有这些属性的非活动模型......”

此外,这些类的行为几乎相同,因此抽象或基础模型对于保持干燥很重要。但我想使用明确命名的模型,以便我知道我正在使用“活动”或“非活动”数据。

我会想象模型类看起来像这样,但我不太确定如何让模型引用不同的表。这可能吗?

class BaseModel < ActiveRecord::Base
  attr_accessible :foo, :bar,

end

class ActiveModel < BaseModel
  # This class gets its data from table :active_models

end

class InactiveModel < BaseModel
  # This class gets its data from table :inactive_models

end

【问题讨论】:

    标签: ruby-on-rails-3 activerecord metaprogramming


    【解决方案1】:

    您可以为此使用ActiveRecord::Base.table_name=

    或者,如果您的模型命名正确,您可以使用ActiveRecord::Base.table_name_prefix=ActiveRecord::Base.table_name_suffix=

    class BaseModel < ActiveRecord::Base
    end
    
    class ActiveModel < BaseModel
      # This class gets its data from table :active_models
      self.table_name = 'active_models'
    end
    
    class InactiveModel < BaseModel
      # This class gets its data from table :inactive_models
      self.table_name = 'inactive_models'
    end
    

    【讨论】:

    • 谢谢!这比我想象的要容易。
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 2019-11-27
    • 2018-09-15
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多