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模型,该模型包含模型特定选项类型,例如,如果庄园有后院、游泳池、网球场或价格有交易、折扣或买一送一。这会通过多态关联来完成吗?我这样做是为了不必为每个模型创建一个选项模型,并且可以只为我想要添加的所有新选项创建一个模型。那么这是解决这个问题的正确方法吗?

4

1 回答 1

2

如果您使用多态选项模型,那么对象所属的每个类/记录的字段都是相同的。我认为这不是您想要的,因为交易没有游泳池,而庄园也不是买一送一的(我希望!)。

我会考虑使用Rails 3.2 和 ActiveRecord::Store 功能。有了这个,只需将一个文本列添加到您的模型(称为“选项”),然后您就可以定义您需要的所有选项。

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 回答