我正在努力做一个“类似电子商务”的解决方案。定义产品时,有许多option_values
,例如鞭子奶油=>是。
当我创建line_item
时,我的关联是这样的。
class LineItem < ActiveRecord::Base
belongs_to :cart
belongs_to :order
belongs_to :product
belongs_to :shop
...
当用户选择产品时,他会选择options_values
,并且必须创建line_item
才能存储此产品。
目前我不确定在订单项中为option_values
建模的好方法。
我的直觉是line_item has_many option_values
,但将外键存储在option_values
中似乎很奇怪。另一个想法是line_item habtm option_values
。
对这个line_item has_many option_values
关系建模的好方法是什么,理想情况下将引用存储在line_items
表中?
答案 0 :(得分:0)
如果您的option_values
始终是布尔值(鞭子奶奶=&是;是),那么您应该拥有一个OptionValues
模型,其中包含所有可用的option_values
并在LineItem
和OptionValues
之间进行操作{1}}。
如果您的选项值并非总是布尔值(sugar =&gt; 2.spoons),那么您必须在连接模型中存储此值(2.spoons),因此您应该执行以下操作:
class LineItem < ActiveRecord::Base
has_many :line_item_option_values
...
end
class LineItemOptionValue < ActiveRecord::Base
belongs_to :line_item
belongs_to :option_value
end
class OptionValue < ActiveRecord::Base
has_many :line_item_option_values
end
并为LineItemOptionValue
提供表格,以获取该选项的值。