将对象作为对象中的参数发送
send object as parameter in resque
抱歉我的新手问题。
我正在发送 current_user 具有用户对象类型作为 resque job runner 参数的帮助程序
JobRunner.run LikerCommenterAnalyzerJob, current_user, session['basic_instagram_data']['access_token'], 505
但是当我尝试在 resque 的执行方法中获取 current_user 参数时,它更改为哈希类型
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>
基本上,当您将任务推送到 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
抱歉我的新手问题。
我正在发送 current_user 具有用户对象类型作为 resque job runner 参数的帮助程序
JobRunner.run LikerCommenterAnalyzerJob, current_user, session['basic_instagram_data']['access_token'], 505
但是当我尝试在 resque 的执行方法中获取 current_user 参数时,它更改为哈希类型
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>
基本上,当您将任务推送到 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