在Rails 4中执行此操作的最佳方法是什么?
我有产品。产品属于一个类别,如"衬衫。"类别有很多属性,例如"大小。"属性有许多PropertyValues,例如" Small," "中,"等
用户需要能够将产品分配到类别,然后为属性设置属性值。
class Product < ActiveRecord::Base
belongs_to :category
class Category < ActiveRecord::Base
has_many :products
has_many : properties
class Property < ActiveRecord::Base
belongs_to :category
has_many :property_values
class PropertyValue < ActiveRecord::Base
belongs_to :property
因此,如果我要跟踪用户为其产品的特定类别属性选择的值,请使用哪种关联并设置?
我已经考虑过为Product和PropertyValue创建一个has_many的场景,:through =&gt;通过ProductAttribute连接模型进行关联,并通过创建和/或删除连接表记录来查找/设置选定的PropertyValues。因此:
class Product < ActiveRecord::Base
belongs_to :category
has_many :product_attributes
belongs_to :property_value, :through => :product_attribute
class PropertyValue < ActiveRecord::Base
belongs_to :property
has_many :product_attributes
has_many :products, :through => :product_attributes
class ProductAttribute < ActiveRecord::Base
belongs_to :product
belongs_to :property_value
或者,我可以创建一个产品和属性has_many,:through =&gt;通过ProductAttribute连接模型进行关联。从那里,我可以将选定的PropertyValue的文本/值存储在连接表的字段中,或者我可以更进一步为ProductAttribute创建与PropertyValue的belongs_to关联并跟踪通过这个选择的值。许多协会。因此:
class Product < ActiveRecord::Base
belongs_to :category
has_many :product_attributes
belongs_to :property, :through => :product_attribute
class Property < ActiveRecord::Base
belongs_to :category
has_many :property_values
has_many :product_attributes
has_many :products, :through => :product_attributes
class ProductAttribute < ActiveRecord::Base
belongs_to :product
belongs_to :property
belongs_to :property_value
class PropertyValue < ActiveRecord::Base
belongs_to :property
has_many :product_attributes
不确定这些方法有多可行,如果有的话,或者如果有其他最好的做法,我不明白这种情况。