【发布时间】:2014-12-01 20:57:22
【问题描述】:
我已在我的 Rails 应用程序中安装 gem Pundit,并仔细按照自述文件中的说明进行操作。
但是,当我在我的任何控制器中使用授权时,我会收到错误消息“未定义的方法 'authorize' for .
另外,当我尝试在视图中使用“策略”时,我收到错误“未定义的方法‘策略’”。
就好像根本没有安装 Pundit!
我已将 Pundit 包含在我的应用程序控制器中。
我有一个包含所有策略的 ApplicationPolicy 文件,然后是从应用程序策略继承的每种记录类型的策略文件。
由于某种原因,我无法将任何代码粘贴到这个问题中,所以我希望我已经包含了足够的信息!
如果有任何想法,我将不胜感激。
【问题讨论】:
-
Pundit 是“纯粹的 Ruby”,因此将它包含在您的应用程序控制器中应该就是您所需要的。你确定你拼写正确吗?
include Pundit是ApplicationController声明下方的第一行。另外,您的控制器是否继承自ApplicationController? -
谢谢!这些想法很有帮助。
-
碰巧,您是否使用 Clearance 进行身份验证?如果是这样,Devise 使用与 Pundit 冲突的名为
authorize的方法。在我的应用程序控制器中,我有这个alias_method :require_login, :authorize,下一行是我的include Pundit。此外,请确保您在模型实例上调用授权(即authorize @my_var) -
在 Rails 引擎中使用时,我们必须在命名空间 ApplicationController 中
require 'pundit'
标签: ruby-on-rails pundit