Rails5 - 未定义的局部变量但它是全局的
Rails5 - Undefined local variable but it's global
我在 Rails 中收到以下错误:
undefined local variable or method `current_user' for #<UserController:0x0000000458d708> Did you mean? @current_user
该错误对应的代码片段为:
authorize @current_user
如您所见,我明确表示错误消息提示的 @current_user
,并且我也像错误消息提示的那样使用 @current_user
。为什么 Rails 认为我指的是局部不存在的变量,而我期望它是全局变量? authorize
方法来自 Pundit.
我添加了一个打印语句来验证全局变量是否存在,下面的代码有效地打印出了一个有效的用户:
p @current_user
authorize @current_user
要使用 Pundit,您必须定义 current_user
(或 pundit_user
):https://github.com/elabs/pundit/blob/master/lib/pundit.rb#L270
当您执行 authorize @current_user
时,确保 current_user
可以使用 UserPolicy
对 @current_user
执行操作。
我在 Rails 中收到以下错误:
undefined local variable or method `current_user' for #<UserController:0x0000000458d708> Did you mean? @current_user
该错误对应的代码片段为:
authorize @current_user
如您所见,我明确表示错误消息提示的 @current_user
,并且我也像错误消息提示的那样使用 @current_user
。为什么 Rails 认为我指的是局部不存在的变量,而我期望它是全局变量? authorize
方法来自 Pundit.
我添加了一个打印语句来验证全局变量是否存在,下面的代码有效地打印出了一个有效的用户:
p @current_user
authorize @current_user
要使用 Pundit,您必须定义 current_user
(或 pundit_user
):https://github.com/elabs/pundit/blob/master/lib/pundit.rb#L270
当您执行 authorize @current_user
时,确保 current_user
可以使用 UserPolicy
对 @current_user
执行操作。