rails一个基类,两个模型和两个db表

时间:2013-04-11 23:28:34

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

您可以使用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
相关问题