我正在使用delayed_job gem在销毁记录时发送电子邮件。
comments_controller.rb
def reject_appeal
@comment = Comment.find(params[:id])
if @comment.destroy
@comment.rejection(@comment)
flash[:alert] = "You have succesfully rejected the appeal."
redirect_to post(@comment.post_id)
end
end
comments.rb
def rejection(comment)
RejectAppeal.delay.notify(comment)
end
现在,如果我删除延迟方法并将其作为RejectAppeal.notify(comment)
,则电子邮件将完全发送出去。但是delay
我不知道会发生什么。在延迟的工作职位日志中我没有看到任何内容。虽然在开发日志中我确实注意到该条目存储在或{至少BEGINS
动作中。
对此有何帮助?我在同一个应用程序中的其他几个邮件程序函数上使用延迟方法,它们都被发送出去了,但我不确定这是什么错误
P.S我正在使用Rails 4.0.1
答案 0 :(得分:1)
延迟的作业是否正确序列化? (检查delayed_jobs表)。运行这个工作有错吗?如果是,错误将存储在last_error
列中。
这可能是因为您正在销毁您的评论然后将其传递给延迟的作业,因此,当延迟的作业运行并尝试加载评论以对其执行某些操作时,无法再找到评论。