Rails - "Неверное отражение источника" для: has_many =>: through - PullRequest
0 голосов
/ 01 марта 2011

У меня проблема с :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 в любом случае).

Кто-нибудь знает, как я мог заставить это работать? Буду очень признателен за любые предложения!

Извините, если раньше задавался этот вопрос, но я искал и не могу найти ответ. Заранее спасибо.

1 Ответ

0 голосов
/ 01 марта 2011

Rails не позволят вам связать вложенные has_many :through подобные ассоциации.

Здесь есть похожий вопрос: Ruby-on-Rails: множественное has_many: через возможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...