所以我有一个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
WherePost.published
返回所有带有publication_status = "published"
.
这就是我在我的Post.rb
:
enum publication_status: [ :unpublished, :published ]
我如何实现这一目标?