将对象作为字符串传递给延迟作业,然后逐渐回到对象

时间:2013-03-18 22:30:17

标签: ruby-on-rails delayed-job

我开始使用延迟作业gem,现在我试图延迟调用接受对象的方法{:val=>'my name'}

我的电话是这样的:

User.delay.my_static_method(my_object)

这是不允许的,因为无法将对象保存在数据库中 那么如何将此对象序列化为字符串以延迟,然后返回到我的方法中的对象?

感谢

2 个答案:

答案 0 :(得分:1)

如果它们的对象足够小,请尝试Ruby的内置序列化http://www.ruby-doc.org/core-2.0/Marshal.html

如果序列化需求比Marshal更复杂,那么像http://msgpack.org/这样的东西就可以了。

答案 1 :(得分:0)

例如,您可以将对象的ID传递给延迟方法调用。但是在给它传递它之前将对象保存到DB或文件中。

然后在您的Worker类代码中,您应该按ID(如果您将其保存到DB)或文件名(如果您将其保存为文件)检索给定对象。