繁体   English   中英

Ruby on Rails Resque将参数作为哈希执行

[英]Ruby on Rails Resque perform paramters as hash

我正在尝试编写一名工作人员来处理一些后台任务,例如群发电子邮件。

我想要的是让我的工作人员接受参数的哈希:

class Worker
  @queue = :worker_queue

  def self.perform(options={})
    user_id = options[:user_id]
  end
end

我比self.perform(arg1, arg2, arg3, arg4, arg5)更喜欢。

一切都在控制台中运行(即Worker.perform(args) )。 但是,每当我将其排队进入resque时,参数都是不确定的。

ActiveRecord::RecordNotFound: Couldn't find User with 'id'=

谁能指出我正确的方向? 我知道排队的参数已序列化为JSON。

我只是考虑了一下,我的问题可能是符号:user_id而不是'user_id' ,因为它已经序列化了吗?

是的,这是正确的。 以下代码是罪魁祸首

user_id = options[:user_id]

具体来说,在哈希( :user_id )中使用符号会引起麻烦,因为在对参数进行序列化/反序列化时,您在Resque工作程序中获得的哈希将所有键都包含为字符串。

您应该使用:

user_id = options["user_id"]

是的,我的猜想是正确的! 当序列化为JSON时,Ruby符号将成为常规键字符串。

一旦我用'user_id'替换了先前代码的符号,一切就开始起作用了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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