Как сделать эту запись активной ассоциации - PullRequest
2 голосов
/ 30 ноября 2011

У меня есть

Модель товара

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 Ответ

2 голосов
/ 30 ноября 2011

Один из способов сделать это - использовать has_many: through. Это создает независимую сущность для вашей таблицы соединений между заказами и товарами. В вашем случае:

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

Я думаю, это решит твою проблему. Таким образом, Order1, который связан с Item1, будет иметь количество 2 в таблице счетов-фактур и то же самое с Item2, имеющим отдельное количество 5 в таблице счетов-фактур.

Подробнее об этих отношениях вы можете прочитать в разделе has_many: through Association в Руководство по ассоциациям активных записей .

...