2

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

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

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

我使用标记系统对帖子进行分类,并且我想创建一个名为“restricted”的标记,其显示操作仅限于登录用户。

以下是我如何使用受限标签调用帖子:

@post.tags.find_by_name("restricted")

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

4

1 回答 1

2

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

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

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

于 2012-11-16T18:11:21.593 回答