有没有办法在延迟工作中添加非持久性记录?我最近更新了我的Rails版本,但现在我无法在延迟工作中添加非持久性记录。
这是我的班级:
class InfoPackDownload
include ActiveAttr::Model
include ::NewRelic::Agent::MethodTracer
attribute :course_id
attribute :first_name
attribute :last_name
attribute :email
attribute :telephone
attribute :receive_newsletter, type: Boolean
attribute :filename
attribute :course_code
attribute :programme_instance_code
attribute :presentation
attribute :title
validates_presence_of :first_name, :last_name
validates :email, presence: true, email: true
def send_interaction
body_params = create_request_body
request = build_request body_params
send_request request
end
end
我正在尝试将以下方法添加到延迟作业中:
@info_pack_download.delay(queue: 'info_pack_download').send_interaction
但是当我调用此方法时,会引发错误,以便将非持久性记录添加到延迟作业。
有人可以就这个问题提出一些建议吗?
答案 0 :(得分:0)
延迟作业需要将作业的参数存储到数据库,以便稍后在作业调度后检索它们。如果它是一个简单的ruby对象,它可以将它序列化为字符串(to_json),并存储它。如果它是数据库模型,则存储ID和类名。
当作业计划运行时,它需要将参数拉出数据库。对于简单模型,它可以反序列化字符串(JSON.parse),对于数据库模型,它可以使用类名和ID从数据库加载模型。你没有提供办法。