【问题标题】:How to pass ActiveRecord model class to Resque如何将 ActiveRecord 模型类传递给 Resque
【发布时间】:2015-11-13 10:38:54
【问题描述】:

假设我有以下 Resque 工作:

class Archive
  @queue = :file_serve

  def self.perform(repo_id, branch = 'master')
    repo = Repository.find(repo_id)
    repo.create_archive(branch)
  end
end

如果我想通过传递对象 id 和对象的类来使其更通用怎么办:

class Archive
  @queue = :file_serve

  def self.perform(object_class, object_id, branch = 'master')
    object = object_class.find(object_id)
    object.create_archive(branch)
  end
end

这显然行不通,而且我不知道自己应该做什么,所以如果有人可以提供一些指导,那将不胜感激!

【问题讨论】:

    标签: ruby-on-rails-3 activerecord resque


    【解决方案1】:

    我会将类的名称传递给作业,而不是类本身。然后,您可以在名称上调用 constantize 以恢复课程,然后在其上调用 find。例如。

    def self.perform(class_name, object_id, branch = 'master')
      object = class_name.constantize.find(object_id)
      object.create_archive(branch)
    end
    

    【讨论】:

      猜你喜欢
      • 2022-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2012-07-20
      • 1970-01-01
      • 2020-10-26
      相关资源
      最近更新 更多