我正在写以下工作:
/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
和其他基于会话的数据。因此,它将更容易使用和测试。