【问题标题】:passing object as string to delayed job and then desirializing back to object将对象作为字符串传递给延迟的作业,然后反序列化回对象
【发布时间】:2013-03-19 06:46:11
【问题描述】:

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

我的电话是这样的:

User.delay.my_static_method(my_object)

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

谢谢

【问题讨论】:

    标签: ruby-on-rails delayed-job


    【解决方案1】:

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

    如果您有比Marshal 更复杂的序列化需求,那么http://msgpack.org/ 之类的方法可以工作。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        相关资源
        最近更新 更多