У меня проблема с :has_many => :through
ассоциацией, которая ссылается на другую :has_many => :through
ассоциацию.
У меня есть User
-> Cart
-> CartItem
-> Product
установка модели в моем приложении rails. Вот модельные ассоциации:
class User < ActiveRecord::Base
has_many :purchases, :class_name => "Cart",
:dependent => :destroy,
:conditions => {:purchased => true}
has_many :items, :through => :purchases,
:readonly => true
has_many :products, :through => :purchases,
:readonly => true
end
class Cart < Activerecord::Base
belongs_to :user
has_many :items, :class_name => "CartItem",
:dependent => :delete_all
has_many :products, :through => :items
end
class CartItem < ActiveRecord::Base
belongs_to :cart
belongs_to :product
end
Идея состоит в том, что в корзине есть много cart_items, которые являются просто ссылками на существующие продукты. После того, как корзина помечена как покупка, пользователь должен иметь доступ к продуктам напрямую через user.products
.
В любом случае ... Я не могу понять, как настроить мою модель User
, чтобы отношения были возможными. Я продолжаю получать следующую ошибку:
Invalid source reflection macro :has_many :through for has_many :products,
:through => :purchases. Use :source to specify the source reflection.
Я предполагаю, что он хочет, чтобы я добавил атрибут :source
в has_many :products
ассоциацию. в модели User, но это кажется глупым, учитывая, что исходная ассоциация названа идентично (и она не работает, когда я добавляю :source => :products
в любом случае).
Кто-нибудь знает, как я мог заставить это работать? Буду очень признателен за любые предложения!
Извините, если раньше задавался этот вопрос, но я искал и не могу найти ответ. Заранее спасибо.