ActiveJob 中的 NameError(未定义的局部变量或方法“current_user”)
NameError (undefined local variable or method `current_user') in ActiveJob
我是在 Rails 中第一次创建工作,以便在他们创建表单时向 current_user
发送电子邮件。
创建方法
def create
@pdform = Pdform.new(pdform_params)
if user_signed_in?
@pdform.user_id = current_user.id
end
respond_to do |format|
if @pdform.save
SubmissionJob.perform_later(current_user, @pdform)
format.html { redirect_to new_pdform_requisition_path(@pdform) }
else
format.html { render :new }
end
end
end
我在作业参数中传递 current_user
和 @pdform
。
提交作业
class SubmissionJob < ApplicationJob
queue_as :default
def perform(*args)
@user = current_user
NewPdform.notify_user(@user, @pdform).deliver
end
end
如果我在 arguments 的参数中传递 current_user
对象并将其分配给 @user
变量,为什么没有为 current_user 定义的方法?
我有此检查以将 pdform
的 user_id 设置为 current_user
id,当我创建表单时正在填充它,这意味着有一个用户。那么为什么这会导致 NameError
?
current_user
对象仅默认在控制器和视图中可用。
您需要将其作为参数传递给您的工作:
替换:
def perform(*args)
作者:
def perform(current_user, pdform)
甚至:
def perform(user, pdform)
NewPdform.notify_user(user, pdform).deliver
end
我是在 Rails 中第一次创建工作,以便在他们创建表单时向 current_user
发送电子邮件。
创建方法
def create
@pdform = Pdform.new(pdform_params)
if user_signed_in?
@pdform.user_id = current_user.id
end
respond_to do |format|
if @pdform.save
SubmissionJob.perform_later(current_user, @pdform)
format.html { redirect_to new_pdform_requisition_path(@pdform) }
else
format.html { render :new }
end
end
end
我在作业参数中传递 current_user
和 @pdform
。
提交作业
class SubmissionJob < ApplicationJob
queue_as :default
def perform(*args)
@user = current_user
NewPdform.notify_user(@user, @pdform).deliver
end
end
如果我在 arguments 的参数中传递 current_user
对象并将其分配给 @user
变量,为什么没有为 current_user 定义的方法?
我有此检查以将 pdform
的 user_id 设置为 current_user
id,当我创建表单时正在填充它,这意味着有一个用户。那么为什么这会导致 NameError
?
current_user
对象仅默认在控制器和视图中可用。
您需要将其作为参数传递给您的工作:
替换:
def perform(*args)
作者:
def perform(current_user, pdform)
甚至:
def perform(user, pdform)
NewPdform.notify_user(user, pdform).deliver
end