我正在将 Devise 和 Cancan 用于 rails 3.2.6 应用程序。在应用程序中,我允许用户创建一个文档,其中包含一些收集在表单中的信息。然后我想允许用户在 localhost:3000/users/1/documents 的文档索引页面上仅列出他们的文档,这是有效的。什么不起作用,是我试图通过将 /users/:id/documents 替换为另一个数字来限制用户查看其他所有人的文档。
我正在使用 cancan 并且都尝试过
可以 :index, Document, :user_id => user.id 可以 :read, Document, :user_id => user.id
然后在 Document 控制器索引方法上
if can? :read, Document
@documents = @user.documents
else
redirect_to root_path
end
也尝试过:index
......但这不起作用。我也在用load_and_authorize_resource
..
对我所缺少的有什么想法吗?
我会说,cancan 正在为我的用户管理和用户控制器工作,以便管理员创建、列出和编辑用户,所以我知道 cancan 正常工作。它还用于更新和删除用户文档。只是索引功能不起作用。
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