我正在撰写以下工作:
/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
有没有办法在my_method中使用current_user,而不必传递它?我有几个私有方法,将current_user传递给每个方法似乎很烦人吗?
想法?感谢
答案 0 :(得分:2)
您可以将作业定义为一个类,因此您可以
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
答案 1 :(得分:0)
你应该总是将“状态”传递给你的外部方法,即使他们可以不经过而获得它。因此,请传递您的current_user
和其他基于会话的数据。因此,它将更容易使用并测试。