ассоциация рельсов принадлежит_к

Я знаю, что Стай, должно быть, ошибается в том, как я строю свою базу данных, но, пожалуйста, найдите минутку, ответив на это: я создаю модель супермаркета, где у 1 пользователя есть список покупок, в каждом списке много продуктов. Итак, что я делаю:

class User < ActiveRecord::Base
  has_many :lists
end

class List < ActiveRecord::Base
  belongs_to :user
  has_many :products
end

class Product < ActiveRecord::Base
  ????
end

В списке есть несколько продуктов, но продукты не принадлежат спискам. Что мне делать, чтобы у пользователей было много списков, а в списках было много продуктов? с уважением,


person Yann    schedule 29.10.2014    source источник


Ответы (2)


Имейте класс, который связывает их через has_many через.

class ListItem < ActiveRecord::Base
  belongs_to :list
  belongs_to :product
end

class List < ActiveRecord::Base 
  belongs_to :user 
  has_many :list_items
  has_many :products, through: :list_items
end
person j-dexx    schedule 29.10.2014
comment
Я не могу поверить, что мне нужен дополнительный класс, чтобы сделать это. Этот тип ассоциации полезен и происходит, я думаю, постоянно. Придется ли вам управлять списком пользователей, имеющих списки покупок с товарами, вы бы поступили именно так? - person Yann; 29.10.2014
comment
Вместо этого вы можете использовать has_and_belongs_to_many, в котором у вас есть таблица БД, но нет модели. - person j-dexx; 29.10.2014