我正在尝试迁移到专家,但遇到了一些麻烦。
我有一个用户模型和一个照片模型。
用户有许多照片,照片是用户的嵌套资源。在我的控制器中,我做到了
@user = User.find(params[:user_id])
@photos = @user.photos在我的康康乐技能课上
can :create, Photo, :user => { :id => user.id }在一个视图中,我会使用
<% if can? :create, @user => Photo %>有没有人知道如何正确地使用Pundit?
提前谢谢你
发布于 2014-08-22 02:47:47
Pundit通过提供对对象的授权,以不同于CanCan的方式进行授权。对于初学者,您需要编写一个PhotoPolicy:
class PhotoPolicy
attr_reader :user, :photo
def create?
photo.user.id == user.id # Use photo.user_id if you have that column available
end
end在您的视图中,您可以执行以下操作:
<% if policy(@photo).create? %>请注意,我在单个Photo上调用此函数。如果您想要一个策略来获取用户有权访问的所有照片,那么您应该使用scope。如果是这样,请让我知道,我会更新我的答案。
https://stackoverflow.com/questions/25378800
复制相似问题