首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4将cancancan迁移到pundit

Rails 4将cancancan迁移到pundit
EN

Stack Overflow用户
提问于 2014-08-19 16:27:16
回答 1查看 1.3K关注 0票数 0

我正在尝试迁移到专家,但遇到了一些麻烦。

我有一个用户模型和一个照片模型。

用户有许多照片,照片是用户的嵌套资源。在我的控制器中,我做到了

代码语言:javascript
复制
@user = User.find(params[:user_id])
@photos = @user.photos

在我的康康乐技能课上

代码语言:javascript
复制
can :create, Photo, :user => { :id => user.id }

在一个视图中,我会使用

代码语言:javascript
复制
<% if can? :create, @user => Photo %>

有没有人知道如何正确地使用Pundit?

提前谢谢你

EN

回答 1

Stack Overflow用户

发布于 2014-08-22 02:47:47

Pundit通过提供对对象的授权,以不同于CanCan的方式进行授权。对于初学者,您需要编写一个PhotoPolicy:

代码语言:javascript
复制
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

在您的视图中,您可以执行以下操作:

代码语言:javascript
复制
<% if policy(@photo).create? %>

请注意,我在单个Photo上调用此函数。如果您想要一个策略来获取用户有权访问的所有照片,那么您应该使用scope。如果是这样,请让我知道,我会更新我的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25378800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档