2011-10-13 47 views
2

我無法弄清楚我在這裏做錯了什麼..我似乎無法得到正確的關於「has_many:creators」行的Event類...我創建了一個rspec測試來驗證事件實例會以「創造者」作出迴應,但我不能讓它通過...任何想法讚賞!我的Rails 3多對多協會有什麼問題?

class Event < ActiveRecord::Base 
has_many :event_invitations 
has_many :creators, :through => :event_invitations, 
       :source => :creator, 
       :class_name => "User" 

class EventInvitation < ActiveRecord::Base 
belongs_to :user 
belongs_to :event 

class User < ActiveRecord::Base 

    has_many :event_invitations, :foreign_key => :creator_id 
    has_many :created_events,  :through => :event_invitations, 
            :source => :event 
+0

'Event' * class *不應該對'creators'做出響應。 'creators'是一個實例方法,只有一個'Event' *實例*會對它做出響應,例如'Event.first.creators'。 –

+0

對不起,你是絕對正確的..我不能得到任何事件對象來響應'創造者'(即\ @fun = Event.new ... @ fun.creators正在拋出該豁免) – Inc1982

回答

2

EventInvitation belongs_to的「用戶」,但你保存「creator_id」。你需要或者店「user_id說明」,或致電該協會的創作者

belongs_to :creator, :class_name => 'User' 

而在你的事件模型,您可以使用此:

has_many :creators, :through => :event_invitations 
+0

謝謝!你釘了它,並教會了一些關於Rails和ActiveRecord的過程。知道是戰鬥的一半。 – Inc1982