繁体   English   中英

如何使用 Rails 正确执行作业?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM