我正在使用Pundit在我的控制器中授权一个模型:
@board = authorize Board.find(id)但是,我的模型上有一个full()方法,它调用mongodb聚合并返回json。如果我尝试授权,我会得到错误:
unable to find policy 'HashPolicy' for ... (object)
这是因为Pundit期望active_record模型进行授权。
我目前正在解决这个问题,我首先对Board.find(id)进行了授权,然后进行第二个db调用来获得聚合。这显然不切实际。
有没有办法让Pundit接受json对象?或者,有没有办法让我从聚合中取回原始对象?
发布于 2020-07-08 03:50:11
事实证明,如果记录不是活动记录对象,则必须显式设置policy_class:
@board = authorize Board.find(id), policy_class: BoardPolicy
https://stackoverflow.com/questions/62781899
复制相似问题