【问题标题】:send object as parameter in resque在 resque 中将对象作为参数发送
【发布时间】:2016-02-21 04:04:16
【问题描述】:

对不起我的新手问题。

我正在发送具有 User 对象类型的 current_user 帮助器作为这样的 resque 作业运行器参数

      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>

【问题讨论】:

  • 我写了我的错误:) undefined method 'InstagramAccount' for #&lt;Hash:0x007f9e39c27458&gt; @sawa

标签: ruby-on-rails ruby resque


【解决方案1】:

基本上,当您将任务推送到 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2016-03-28
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多