我在我的Rails应用程序中使用Sidekiq gem来异步处理一些长时间运行的进程。如this Railscast中所示,对要处理的模型的引用作为参数传递给执行后台处理的worker类的perform_async
方法。
如果相关模型是Active Record对象,这不会有问题。然而,它是一个Active Type对象,设计为像ActiveRecord" quack;不幸的是,它没有大声嘎嘎,所以我得到ActiveRecord::UnknownPrimaryKeyError
。
如何为真正不是db对象的Ruby对象设置主键,并说服Sidekiq对其进行处理?无法从Active Type Github页面收集有关如何执行此操作的信息。
任何帮助将不胜感激!
答案 0 :(得分:0)
这取决于您想要对Active Type对象做什么。 作为Documentation州
传递给
perform_async
的参数必须由simple
JSON数据类型组成:string,integer,float,boolean,null,array和hash。
如果你没有id来识别Object(从你的帖子我明白你没有),那么最好的解决方案是将Object转换为Hash然后将其传递给{{1} }。但正如我所说,这取决于你需要从你的对象获得什么数据。在某些情况下,您可能不需要使用哈希,更简单的数据类型就足够了。