Rails 3.2.6アプリケーションにDeviseとCancanを利用しています。アプリケーションでは、ユーザーがフォームに集められた情報を含むドキュメントを作成できるようにします。次に、ユーザーが localhost:3000/users/1/documents のドキュメント インデックス ページに自分のドキュメントのみを一覧表示できるようにします。これは機能しています。うまくいかないのは、/users/:id/documents を別の番号に置き換えることで、ユーザーが他のユーザーのドキュメントを表示できないように制限しようとしていることです。
私はcancanを使用しており、両方を試しました
can :index, Document, :user_id => user.id can :read, Document, :user_id => user.id
次に、ドキュメント コントローラーのインデックス メソッドで
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