0

我有一个模型组和一个模型人。一个人属于一个组,一个组有_很多人。它们是嵌套资源。根据此页面,在 PeopleController 中使用以下内容进行授权就足够了:

load_and_authorize_resource :group
load_and_authorize_resource :person, :through => :group

我没有特别添加直接管理人员的能力,但这暗示这不是必需的,因为它是通过集团授权的。授权在 Group 模型上正常工作,但在 Person 上失败。

我可以通过添加这个能力来解决这个问题:

can :manage, Person, :group => { :user_id => user.id }

但是,文档再次指出,尽管这样做是一个“好主意”(为什么?),但授权并不需要工作。

我很感激你能提供的任何帮助!

4

1 回答 1

0

我建议你用方块来定义能力。

can :manage, Person do |person|
  person.group.user_id == user.id
end

这对我来说比在嵌套资源中使用散列定义能力更好。尝试!

于 2013-10-22T17:54:37.883 回答