0

ほぼ同一の構造を持つ 2 つのモデルを作成したいと考えています。しかし、データセットを 2 つの異なるテーブルに保持したいと考えています。これはアクティブなレコードで可能ですか?

異なるテーブルの理由は、「これらのプロパティを持つアクティブなモデルは存在しません...」、「これらのプロパティを持つ非アクティブなモデルは存在しません...」など、意味のある結果を返さないクエリが必要だからです。

また、クラスはほとんど同じように動作するため、抽象モデルまたは基本モデルはドライな状態を保つために重要です。しかし、「アクティブ」または「非アクティブ」なデータを操作していることがわかるように、明確に名前が付けられたモデルを操作したいと考えています。

モデルクラスは次のようになると思いますが、モデルが異なるテーブルを参照する方法がよくわかりません。これは可能ですか?

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
4

1 に答える 1

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
于 2013-04-12T02:31:45.920 に答える