0

Storeモデルを持っていた場合、、、ProductおよびUserPriceの関連付け

class User < ActiveRecord::Base
  has_many :products
  has_many :stores
  has_many :prices
end

class Store < ActiveRecord::Base
  belongs_to :user
  has_many :prices
end

class Product < ActiveRecord::Base
  belongs_to :user
  has_many :prices
end

class Price < ActiveRecord::Base
  belongs_to :user
  belongs_to :product
  belongs_to :store
end

class Estate < ActiveRecord::Base
  belongs_to :user
end

また、モデル固有のオプションタイプを保持するモデルを作成したいOption場合は、不動産に裏庭、プール、テニスコートがある場合、または価格に取引がある場合、割引または購入すると1つ無料になります。これは、ポリモーフィックな関連付けによって行われますか?これを行っているので、モデルごとにオプションモデルを作成する必要はなく、追加するすべての新しいオプションに対して1つのモデルを作成するだけで済みます。それで、これはこれについて行く正しい方法ですか?

4

1 に答える 1

2

ポリモーフィックオプションモデルを使用する場合、フィールドは、オブジェクトが属する各クラス/レコードで同じになります。取引にはスイミングプールがなく、不動産は1つ1つ購入することはできないので、これはあなたが望むものではないと思います(私は願っています!)。

Rails3.2とActiveRecord::Store機能の使用を検討します。これにより、モデルに1つのテキスト列を追加するだけで(「オプション」と呼びます)、必要なすべてのオプションを定義できます。

class Estate < ActiveRecord::Base
  belongs_to :user
  store :options, accessors: [ :backyard, :pool, :tennis, :butler, :wine_cellar ]
end

estate = Estate.new
estate.pool = true
estate.options[:number_of_sharks] = 3 # Attributes not defined as accessors work too
于 2012-06-05T23:32:45.063 に答える