だから私はPostモデルを持っています。Mypostsは公開または非公開のいずれかです。私はRolify、CanCanCan、およびDeviseを使用しています。
私が望んでいるのは、ユーザーがすべての投稿のアクション:adminを表示できるようにすることですが、私またはユーザー (つまり、ログインしていない) は投稿のみを表示できるようにする必要があります。Post#Show:memberguestPost.published
私ability.rbはこのように見えます:
if user.has_role? :admin
can :manage, :all
#Member
elsif user.has_role? :member
can :read, :all
can :create, Post
can :status, Post
can :update, Post do |post|
post.try(:user) == user
end
#Guest
else
can :read, :all
can :create, Post
can :status, Post
end
と の両方:memberでこれを試してみGuestましたが、ページで無限のリダイレクトループが発生しましたPost#Index-これは私のroot_pathです:
can :read, Post.published
WherePost.publishedは、 を持つすべての投稿の配列を返しますpublication_status = "published"。
これは、私が自分で宣言した方法ですPost.rb:
enum publication_status: [ :unpublished, :published ]
どうすればこれを達成できますか?