我有一个模型组和一个模型Person。一个人属于一个群体,一个群体拥有多人。它们是嵌套资源。根据{{3}},在PeopleController中授权以下内容应该足够了:
load_and_authorize_resource :group
load_and_authorize_resource :person, :through => :group
我特意不添加了直接管理人员的能力,但暗示这不应该是必要的,因为它是通过集团授权的。授权在Group模型上正常工作,但在Person上失败。
我可以通过添加此功能来解决这个问题:
can :manage, Person, :group => { :user_id => user.id }
但同样,文档说尽管这样做是一个“好主意”(为什么?)但授权工作不一定是必要的。
我很感激您提供的任何帮助!
答案 0 :(得分:0)
我建议你用积木来定义能力。
can :manage, Person do |person|
person.group.user_id == user.id
end
这比使用嵌套资源中的哈希定义功能更好。试试吧!