だから私はPost
モデルを持っています。Myposts
は公開または非公開のいずれかです。私はRolify、CanCanCan、およびDeviseを使用しています。
私が望んでいるのは、ユーザーがすべての投稿のアクション:admin
を表示できるようにすることですが、私またはユーザー (つまり、ログインしていない) は投稿のみを表示できるようにする必要があります。Post#Show
:member
guest
Post.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 ]
どうすればこれを達成できますか?