无法引用此模型所属的其他模型?

时间:2013-12-05 02:37:04

标签: ruby-on-rails model ruby-on-rails-4

相关位:

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邀请!`方法

2 个答案:

答案 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

希望它有所帮助。