相关位:
class Event < ActiveRecord::Base
...
belongs_to :owner, class_name: User, foreign_key: :owner_id
...
def self.lookup_and_send_emails(addresses, msg)
addresses.each do |email|
user = User.where(email: :email)
if user
invite!( user)
SwapMailer.babysitter_request(email, msg).deliver
else
#send the devise/website invitation
end
end
end
def self.invite!(user)
UsersEventInvitation.create(invite_sent_by: self.owner.id, invite_sent_to: user.id, event_id: self.id)
end
...
end
我得到了一个例外:
undefined method `owner' for #<Class:0x007fa0dcd73fc8>
这里给出了什么?我喜欢做的是分配current_user.id
我在哪里使用self.owner.id但是我认为这将是一种解决方法,因为 不是工作。
更新:
我从控制器那里打电话给Event.lookup_and_send_emails(...)
。我现在正在@event.lookup_and_send_emails(...)
,但我现在为#undefined method
获取pointing at the the
id'self.owner.id line in the
邀请!`方法
答案 0 :(得分:1)
问题是invite!
方法是类方法,而不是实例方法。因此,它在代表Class
的{{1}}对象上定义,而不是任何一个单独的事件。如果您要从特定事件的所有者发送邀请,则这些需要是实例方法。所以用
Event
e.g。方法定义之前没有def invite!(user)
。
答案 1 :(得分:1)
从邀请中删除自己!以及lookup_and_send_emails方法。因为他们应该实例化方法。追加自我使他们成为类方法。当你在没有任何对象的类方法中调用其他方法时,它只将它作为类方法。
class Event < ActiveRecord::Base ...
belongs_to :owner, class_name: User, foreign_key: :owner_id
def lookup_and_send_emails(addresse s, msg) addresses.each do |email| user = User.where(email: :email) if user invite!( user)
SwapMailer.babysitter_request(email, msg).deliver else #send the devise/website invitation end end end
def invite!(user)
UsersEventInvitation.create(invite_sent_by: self.owner.id, invite_sent_to: user.id, event_id: self.id)
end
希望它有所帮助。