2011-10-13 48 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