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

AKW*_*KWF 2 ruby-on-rails cancan

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

Sha*_*ell 5

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

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

can :manage, Category, :user_id => user.id
Run Code Online (Sandbox Code Playgroud)

或者您可以使用块:

can :manage, Category do |c|
  c && c.user_id == user.id
end
Run Code Online (Sandbox Code Playgroud)

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

这些下描述与散列定义能力定义与块能力分别惭惭文档.