是否有一种方法可以让/lib作业中的所有方法都可以使用一个持久变量?



我正在写以下工作:

/lib/contact_import_job.rb

在这份工作中我有:

def perform
  current_user = XXX.user
  my_method(21)
end
private
my_method(i)
  is there a way to get current_user here w/o having to pass it???
end

是否有一种方法来使用current_user在my_method,而不必传递它?我有几个这样的私有方法,似乎恼人的是要传递current_user到每一个?

想法?由于

您可以将作业定义为一个类,因此可以有

class ContactImporterJob 
  def initialize(user)
    @user = user
  end
  def perform
    # Do all the stuff here, accessing @user for the user
  end
  private
  # Private methods still have access to @user
end

这样,您的脚本可以发送当前用户一次,而不必一直传递它。如:

job = ContactImporterJob.new(current_user)
job.perform

您应该始终将"states"传递给外部方法,即使它们可以不传递就获得它。因此传递您的current_user和其他基于会话的数据。因此,它将更容易使用和测试

好运

相关内容

  • 没有找到相关文章

最新更新