我已经设置了邮件:
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,但结果相同。 为什么会发生这种情况?我该如何解决?
答案 0 :(得分:3)
您应该使用@poll
替换未在模型中设置的self
:
def send_email
PollMailer.created_poll_email(self).deliver_now
end