2016-02-20 24 views
1

对不起,我的新手问题。发送对象作为参数在resque

我送具有用户对象类型作为这样

 JobRunner.run LikerCommenterAnalyzerJob, current_user, session['basic_instagram_data']['access_token'], 505 

但resque工作亚军参数CURRENT_USER帮手,当我试图让CURRENT_USER参数在执行resque的方法将其改为散列类型

def self.perform (current_user, access_token, archive_id) 

account = current_user.InstagramAccount.where('access_token', access_token).first 

end 

和我的错误是

undefined method `InstagramAccount' for #<Hash:0x007f9e39c27458> 
+0

我写了我的错误:)未定义的方法'InstagramAccount'为#<哈希值:0x007 f9e39c27458>'@sawa –

回答

2

基本上,当哟你将一个任务推送到resque,它将存储在稍后运行的地方(例如Redis)。所以它不能存储你的对象,它只是存储你传递参数的描述,上面的Hash就是描述。

然后Resque拉下描述来运行它。

因此该解决方案将是,把你使用检索对象,而不是(这是最好的做法)的信息

当按下任务:

JobRunner.run LikerCommenterAnalyzerJob, current_user.id, session['basic_instagram_data']['access_token'], 505 

当乳宁任务

def self.perform (user_id, access_token, archive_id) 
    user = User.find(user_id) 
    account = user.InstagramAccount.where('access_token', access_token).first 
end 
+0

它的工作:)谢谢你Hieu –