CanCan,仅限具有特定标记的资源的视图操作

时间:2012-11-16 15:49:16

标签: ruby-on-rails ruby-on-rails-3 devise cancan

我有一个使用设计和cancan的rails应用程序。

我有一个帖子资源,用户(登录或不登录)可以阅读:

user ||= User.new
if user.has_role? :admin
  can :manage, :all
else
  can :read, Post
end

我使用标记系统对帖子进行分类,我想创建一个名为“受限制”的标记,其显示操作仅限于在用户中签名。

以下是我如何使用受限制的标记调用帖子:

@post.tags.find_by_name("restricted")

我应该在控制器中使用if语句还是以某种方式限制ability.rb文件中的操作?

1 个答案:

答案 0 :(得分:2)

您可以在can :read, Post下面添加以下代码:

cannot :read, Post, tags: { name: "restricted" }

此限制用户未登录无法阅读帖子标签的名称为“受限制”。