2011-10-07 15 views
2

我一直在使用DelayedJob在最后一天半的时间里摔跤。我试图创建一个简单的Job类,它接受一个大字符串和一个ActiveRecord对象。但是,无论我将它传递给Job时,它都被视为零。我尝试了许多不同的策略来完成这项工作;我试着只传入ActiveRecord对象的id(作为nil处理),我尝试在Job对象中添加一个初始化程序(而不是从Struct的一个实例继承它)......没有任何效果。DelayedJob Job实例将所有传入的对象视为零

我已经简化了工作类弄成荒谬的,它仍然不工作:

class SimpleJob < Struct.new(:owner_id) 
    def perform 
    @owner = Owner.find(owner_id) 
    puts @owner.full_name 
    end 
end 

而且在我的控制器:

def test_job 
    Delayed::Job.enqueue(SimpleJob.new(@owner.id)) 
    redirect_to :action => 'index', :controller => 'owner' 
end 

的错误是,当然,找不到所有者,其ID为nil(在你可能会问,是的,@owner被实例化并工作; before_filter确保这一点)。

我使用Rails 2.3.5,DelayedJob版本2.0.7。我的Job对象位于libs文件夹中,如果这有所帮助。

是否有一些我缺少的配置?

+0

第1行,owner_id是而第3行的象征,它是一个普通的字符串,而不是在代码中提及任何地方(如果这是owner_id在你的代码的唯一引用)。可能是这个原因,@owner返回零。 – rb512

+0

Noob问题 - 但什么“类SimpleJob

回答

0

您对延迟作业的呼叫设置正确。首先要检查的是,@ owner.id不是无,因为它更可能是它的问题

0

查看数据库,在表delayed_jobs,并检查对象是否正确序列化。

再见

相关问题