Cancan可以用于限制对单个模型的特定值的访问吗?

时间:2010-10-05 15:48:25

标签: ruby-on-rails cancan

我有一个包含Categories的Rails 3应用程序。类别可由具有类别所有者角色的人员管理。但类别所有者应该只能访问他拥有的类别,而不能访问其他类别。我可以使用CanCan锁定管理功能,但我需要自己限制特定的类别。

1 个答案:

答案 0 :(得分:5)

您可以通过以下两种方式之一来完成。

您可以指定属性哈希以限制Ability类中的访问权限。

can :manage, Category, :user_id => user.id

或者你可以使用一个块:

can :manage, Category do |c|
  c && c.user_id == user.id
end

这些都会检查您要检查的类别的user_id属性是否与您要检查的用户匹配。

这些内容分别在CanCan文档中的Defining Abilities with HashesDefining Abilities with Blocks下进行了描述。