ruby-on-rails-3 – Resque Worker:无效的运算符:$oid

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – Resque Worker:无效的运算符:$oid前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
几天前工作的工人因某种原因停止工作.

resque日志使用errorinvalid运算符报告Mongo :: OperationFailure的异常:$oid

class SimilarTargets
  @queue = :similar_queue

  def self.perform(target_id)
    source_target = Target.find(target_id)

    ....

  end
end

即使通过rails控制台传入直接字符串,工作程序也会在Target.find(target_id)上失败.

Target.find(id)在控制台和代码中的其他地方正常工作,我无法弄清楚为什么这个失败了,即使工作者类在上周从未改变过.

解决方法

你最近升级了Mongoid吗?该错误使得听起来像.find()方法正在接收像{“$oid”:“[STRING]”}这样的东西,它是Mongo的对象ID的严格json表示.

假设你只想快速解决问题,你可以用这样的东西解决它:

target_id = target_id["$oid"] unless target_id.is_a?(String)
原文链接:https://www.f2er.com/ruby/264804.html

猜你在找的Ruby相关文章