所以我有一個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 ]
如何實現這一目標?