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