has_many在自己的表中使用外键作为数组?

时间:2012-03-20 04:19:04

标签: ruby-on-rails associations

我正在努力做一个“类似电子商务”的解决方案。定义产品时,有许多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表中?

1 个答案:

答案 0 :(得分:0)

如果您的option_values始终是布尔值(鞭子奶奶=&是;是),那么您应该拥有一个OptionValues模型,其中包含所有可用的option_values并在LineItemOptionValues之间进行操作{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提供表格,以获取该选项的值。