2011-03-01 45 views
0

我遇到:has_many => :through關聯的問題,該關聯引用另一個:has_many => :through關聯。Rails - 「Invalid source reflection」for:has_many =>:通過

我有一個UserCartCartItemProduct模型安裝進入我的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. 

我assumming它要我一個:source屬性添加到has_many :products副教授。在用戶模型中,但這看起來很愚蠢,考慮到源協會的命名方式是相同的(並且無論如何我都會添加:source => :products)。

有誰知道我怎麼能得到這個工作?我真的很感激任何建議!

對不起,如果這個問題之前已經問過,但我一直在尋找,我找不到答案。提前致謝。

+0

可能重複[的Ruby-on-Rails的:多的has_many:通過可能的(http://stackoverflow.com/questions/2383479/ruby-on-rails-通過多個可能性) – bschaeffer 2011-03-02 21:22:49

回答

0

Rails將不會允許你鏈式嵌套has_many :through這樣的關聯。

有一個類似的問題在這裏:的Ruby-on-Rails: Multiple has_many :through possible?

+0

我已經設置了一個實例方法,基本上可以做到我想要的(基於您指出的帖子)。感謝大家的聯繫,不知道這是一個問題。 – bschaeffer 2011-03-02 21:17:51

+1

作爲rails 3我相信這是可能的 – dabobert 2015-12-13 20:48:36

+0

我目前正在升級從Rails 2.3(我知道)到最終Rails 4.2.5的應用程序。我目前在Rails 3.0版本中,並且堅持這個相同的問題。但是,是的,我知道在最近的3個版本中,你可以鏈接has_many:throughs – 2016-01-06 13:21:30

相關問題