delayed_job_mongoid不在后端写入数据

时间:2013-06-26 15:06:10

标签: ruby-on-rails-3 delayed-job mongoid3

我有mongoid模型

class RequestResponse
  include Mongoid::Document
  field :body, type: String
  field :job_id, type: Fixnum
  field :completed, type: Boolean
end

根据rails cast我的lib文件夹中有一个类

class MyJob < Struct.new(:session, :url, :r_id)
  def perform
    rr = RequestResponse.find(r_id)
    session = YAML.load session
    rr.body = session.get(url).body
    rr.completed = true
    rr.save
  end
end

我在控制器中调用了一些地方

rr = RequestResponse.new
rr.save
Delayed::Job.enqueue(MyJob.new(session.to_yaml, url, rr.id),3)

我可以看到

rake jobs:work
1 jobs processed at 19.3392 j/s, 0 failed ...

如果我检查

,结果不存储在rr的表中
rr.body

仍然没有任何人可以帮助我提前谢谢

2 个答案:

答案 0 :(得分:0)

Struct.new为您创建实例变量,您可以使用self@

进行访问

试试这个

class MyJob < Struct.new(:session, :url, :r_id)
  def perform
    rr = RequestResponse.find(@r_id)
    session = YAML.load @session
    rr.body = session.get(@url).body
    rr.completed = true
    rr.save
  end
end

答案 1 :(得分:0)

我的工作被默默删除了。我已经通过在config / initializers / custom.rb中创建一个文件来修复了这个问题,并将此行

require File.expand_path(File.join(File.dirname(__FILE__), "../../lib/my_job"))