【发布时间】:2017-01-28 09:23:22
【问题描述】:
对于我使用 Rails 5 构建的个人网站,我正在尝试实现发送联系表单的工作。我正在使用delayed_job_active_record gem。
我生成了一个工作 ContactMessageJob:
app/jobs/contact_message_job.rb
class ContactMessageJob < ApplicationJob
queue_as :contact_message
def perform(message)
MessageMailer.send_message(message).deliver_now
end
end
然后在 MessagesController 中,我在 ContactMessageJob 上调用 perform_later 方法:
app/controllers/messages_controller.rb
...
def create
@message = Message.new(message_params)
if @message.valid?
ContactMessageJob.perform_later(@message)
redirect_to contact_path, notice: "Your message has been sent."
else
flash[:alert] = "An error occured while delivering this message."
render :new
end
end
但是当我尝试通过联系表单发送消息时,执行 ContactMessageJob.perform_later(@message) 时出现此错误:
ActiveJob::SerializationError at /contact
Unsupported argument type: Message
我对使用 ActiveJob 有点陌生,所以我不确定如何解决这个问题。非常欢迎任何建议。
我的仓库位于:https://github.com/acandael/personalsite/tree/job
你好,
安东尼
【问题讨论】:
标签: ruby-on-rails-5 delayed-job rails-activejob