그래서 Post
모델이 있습니다. 내 posts
은 게시되거나 게시되지 않을 수 있습니다. 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
을
여기에서 Post.published
은 publication_status = "published"
인 모든 게시물의 배열을 반환합니다.
이 내가 선언하는 방법입니다 내 Post.rb
에 :
enum publication_status: [ :unpublished, :published ]
어떻게 이것을 달성합니까?