[英]How can i execute a job properly with rails?
路由是这样的: get:'/hi', to: 'tables#execute'
我有这个 controller 但我不知道如何执行它
class TableController < ApplicationController
def execute
CurrentJob.set(wait: 2.minutes).perform_later(self)
render plain: 'OK'
end
end
我收到以下错误:
ActiveJob::SerializationError in TableController#execute
Unsupported argument type: TableController
注意:我已经像这样修改了我的 controller:
def execute
CurrentJob.perform_later params[:name]
render plain: 'OK'
end
让我知道如何执行它。
perform_later
接受你想要传递给工作的东西。 这些被传递给作业的perform
方法。 它只接受它知道如何序列化的某些类型。
默认情况下,arguments 必须是 String、Integer、Float、NilClass、TrueClass、FalseClass、BigDecimal、Symbol、Date、Time、DateTime、ActiveSupport::TimeWithZone、ActiveSupport::Duration、Hash、ActiveSupport::HashWithIndifferentAccess、Array、Range,或 GlobalID::Identification 实例,尽管这可以通过添加自定义序列化程序来扩展。
Controller object 是不允许的,传递给后台作业也没有多大意义。 控制器的工作是决定将什么传递给作业,可能是来自params
的东西。
有关更多信息,请参阅 Active Job Basics 中的Creating A Job 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.