所以我有一些電子郵件沒有出去,因爲沒有實例化郵件服務API密鑰。但是,詳細信息模型對象被保存在數據庫中。我不想在數據庫中重新創建它們。我可以發送delayed_job一個內存中唯一的ActiveRecord對象嗎?
我編寫了一個rake任務來發送電子郵件,並且它更容易嘗試創建一些臨時內存中對象,而不是嘗試根據detail_params中的內容找到正確的ActiveRecord對象。然後,我用DetailMailerJob發送的電子郵件,並通過在實例化詳細對象。
temp_obj = Detail.new(detail_params)
DetailMailerJob.new.delay.notify_job(temp_obj)
但我運行rake任務後,注意到在延遲:: Job.all隊列以下錯誤:
last_error: "ActiveRecord::RecordNotFound
這是否意味着只辦法,我在通詳細對象爲DetailMailerJob是先找到數據庫實例化的記錄? (即,沒有在內存中的對象)
編輯:這裏是DetailMailer & DetailMailerJob類。
class DetailMailerJob
def notify_job(detail)
DetailMailer.notify_job(detail).deliver
end
end
class DetailMailer < ActionMailer::Base
def notify_job(detail)
@detail = detail
@emailed_to = detail.emailed_to.join(", ")
mail(to: detail.emailed_to, subject: "#{detail.full_name} - New Message")
end
end
如果不知道「DetailMailerJob」中有什麼,就不可能回答這個問題。這就是產生錯誤的原因! – Gene
感謝您的建議基因。更新。 – Nona