Rails邮件程序在控制器上工作但不在模型上工作

时间:2018-04-06 08:37:13

标签: ruby-on-rails

我已经设置了邮件:

def created_poll_email(poll)
    @poll = poll
    mail(subject: 'A new poll was created! ' + @poll.question)
  end

首先我在民意调查控制器上调用它:

  def create
   @poll = Poll.new(poll_params.merge(user: current_user))
   if @poll.save
   PollMailer.created_poll_email(@poll).deliver_now

它工作正常。

现在我想把它转移到模型上的回调:

after_save :send_email

def send_email
  PollMailer.created_poll_email(@poll).deliver_now
end

但现在我得到错误的未定义方法`问题'为nil:NilClass。我试图将其他回调设置为after_create或after_commit,但结果相同。 为什么会发生这种情况?我该如何解决?

1 个答案:

答案 0 :(得分:3)

您应该使用@poll替换未在模型中设置的self

def send_email
  PollMailer.created_poll_email(self).deliver_now
end