我在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 。
我添加了一个print语句来验证全局变量是否存在,以下代码有效地打印出一个有效的用户:
p @current_user
authorize @current_user
答案 0 :(得分:2)
要使用Pundit,您必须定义current_user
(或pundit_user
):https://github.com/elabs/pundit/blob/master/lib/pundit.rb#L270
执行authorize @current_user
时,确保current_user
可以使用@current_user
对UserPolicy
执行操作。