如何使这个活跃的记录关联

时间:2011-11-30 06:33:25

标签: ruby-on-rails ruby database-design activerecord

我有一个

项目模型

class Item < ActiveRecord:Base
  has_and_belongs_to_many :orders
end

订单型号

class Order < ActiveRecord:Base
   has_and_belongs_to_many : items
end

订单可以包含许多项目,HABTM将负责这些项目。但是,我在哪里/如何存储订购商品的数量?

例如: 让我们说Order1中有Item1和Item2。现在我想存储与Order1相关的数量,它有两个Item1和五个Item2。

执行此操作的轨道方式是什么?

1 个答案:

答案 0 :(得分:2)

你可以做的一种方法是使用has_many:通过关联。这为订单和商品之间的连接表创建了一个独立的实体。在你的情况下:

class Order < ActiveRecord::Base
  has_many :invoices
  has_many :items, :through => :invoices
end

class Invoice < ActiveRecord::Base
  belongs_to :order
  belongs_to :items

  #Put in the migration for this table a column for quantity
end

class Item < ActiveRecord::Base
  has_many :invoices
  has_many :orders, :through => :invoices
end

这可以解决你的问题。这样,与Item1相关联的Order1在Invoice表中的数量为2,而与Invoice表中的单独数量为5的Item2相同。

您可以在The has_many :through Association中的A Guide to Active Record Associations部分详细了解这些关系。