首页 > 解决方案 > 使用 .deliver_later 发送电子邮件时出现序列化错误

问题描述

我有一个注册控制器操作,它发送一封确认注册的电子邮件。如果我使用 .deliver_now 它可以工作,但如果我尝试使用 .deliver_later 我会得到:

用户中的 ActiveJob::SerializationError::UsersController#process_signup

不支持的参数类型:时间

我的代码:

Emails
  .with(template_data: processable_data.merge({:user => @u.safe_attributes }))
  .signup_inactive
  .deliver_later # not even passing a time to deliver the message at

template_data 是一个哈希值,其中包含一组可在电子邮件模板中使用的特定于用户的属性,我正在使用 Liquid,因为它们是由用户编辑的。它包括一些 DateTime 值(created_at/updated_at),但 ActiveJob 应该接受 Date/Time/DateTime 值 afaik?

难道我做错了什么?

标签: ruby-on-railssidekiqrails-activejob

解决方案


推荐阅读