作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 Devise 和 Cancan 用于 rails 3.2.6 应用程序。在应用程序中,我允许用户使用在表单中收集的一些信息来创建文档。然后我想允许用户在 localhost:3000/users/1/documents 的文档索引页面上只列出他们的文档,这是有效的。不起作用的是,我试图通过将/users/:id/documents 替换为另一个数字来限制用户查看其他人的文档。
我正在使用 cancan 并尝试了两者
can :index, Document, :user_id => user.id
可以:读取,文档,:user_id => user.id
然后在文档 Controller 索引方法上
if can? :read, Document
@documents = @user.documents
else
redirect_to root_path
end
:index
也......但这不起作用。我也在用
load_and_authorize_resource
..
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.id
if user.has_role? :user
can :create, Document
can :read, Document, :user_id => user.id
can :update, Document, :user_id => user.id
end
end
end
end
最佳答案
您必须确保未登录的用户以及 user.id
的用户与文档的 user_id
不同(文档所有者)无权阅读所有文档。
class Ability
include CanCan::Ability
def initialize(account)
user ||= User.new #non-logged-in user
# logged in users
if user.id and user.has_role?(:user)
#content owners
can :manage, Document, :user_id => user.id
#other logged-in users
can [:show, :create], Document
end
end
end
can :read, :all
这样的线路或
can :read, Document
如果您说 cancan 已经在工作,那么您很可能是在某处给予许可。
关于ruby-on-rails - 使用 CanCan 将索引页面上的 View 限制为 user_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463623/
我是一名优秀的程序员,十分优秀!