我遇到了:has_many => :through
关联的问题,该关联引用了另一个:has_many => :through
关联。
我的rails应用程序中有一个User
- > Cart
- > CartItem
- > Product
模型设置。以下是模型关联:
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
assoc添加has_many :products
属性。在用户模型中,但考虑到源关联名称相同(并且在我添加:source => :products
时无效),这看起来很愚蠢。
有谁知道我怎么能让它发挥作用?我真的很感激任何建议!
很抱歉,如果之前已经问过这个问题,但我一直在搜索,但我找不到答案。提前谢谢。
答案 0 :(得分:0)
Rails不允许您链接嵌套的has_many :through
关联。
这里有一个类似的问题:Ruby-on-Rails: Multiple has_many :through possible?