【问题标题】:Job failed to load: `@' is not allowed as an instance variable name作业加载失败:“@”不允许作为实例变量名
【发布时间】:2014-05-02 15:09:46
【问题描述】:

我在使用延迟作业时不断出错。

Job failed to load: `@' is not allowed as an instance variable name.

在这里调用它:

report = Report.find(params[:id])
report.delay.record_fixing( report.records.where(found: nil, pending: nil) )
redirect_to reports_path

记录修复是

def record_fixing(records)
  records.search_fullcontact
end

【问题讨论】:

  • 粘贴方法代码search_fullcontact
  • 我也遇到了同样的问题,你有解决办法吗?
  • 和完整的错误跟踪。
  • @sevenseacat 请检查答案并发表评论。
  • 这仍然是个问题吗?

标签: ruby-on-rails delayed-job


【解决方案1】:

这里问题的原因是传递给方法record_fixing的参数,即

   ActiveRelation Object(report.records.where(found: nil, pending: nil))

它与方法名称一起被序列化,因为延迟作业出于某种原因这样做,但它没有这样做,因此引发此错误,并将其添加到表列last_error,因此要解决此类问题我建议,我们应该传递对象id 而不是整个对象,并在方法record_fixing 中获取该对象,其想法是提供更简单的参数 用于序列化。

【讨论】:

  • @MohamedElMahallawy,你的答案是什么,请发帖。
  • @Abk,您对此有何评论?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
相关资源
最近更新 更多