如何将ActiveRecord模型类传递给Resque

时间:2015-11-13 02:32:28

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

我们说我有以下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

显然,这不起作用,而且我对应该应该做什么没有感觉,所以如果有人能提供一些指导,那将非常感激!

1 个答案:

答案 0 :(得分:0)

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

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