声明性授权嵌套if_attribute

时间:2012-04-11 01:49:29

标签: ruby-on-rails activerecord declarative-authorization

我很难理解声明性授权和嵌套if_attributes的文档。

模特:

class Company < ActiveRecord::Base
  has_many :users, :through => :division
end

class Division < ActiveRecord::Base
  belongs_to :company
  has_many :users
end

class User < ActiveRecord::Base
  belongs_to :post
end

我的规则:

role :company_admin do
includes :company_admin
  has_permission_on :companies, :to => [:index, :show, :edit, :update] do
  if_attribute :id => is { user.division.company.id } # This is the problem....
end

在我的层次结构中,我定义了一个company_admin角色,应该允许其编辑自己的公司以及所有部门和用户。公司管理员还有另一个角色,可以完全编辑&amp;添加公司和以下所有角色。

我似乎被挂起的地方是上面列出的规则(我知道这不是正确的,它只是一个例子的填充物)。我需要确定当前用户只能编辑自己的公司,而不是任何其他公司。这似乎是一个嵌套的if_attribute,但我似乎无法理解文档中嵌套的if_attributes的例子。

提前感谢您的任何帮助!

1 个答案:

答案 0 :(得分:0)

分辨率不需要嵌套的if_attribute。我使用的示例实际上是正确的,我的authorization_rules.rb文件中有其他权限错误,该用户继承这导致了混淆。

if_attribute :id => is { user.division.company.id } #This was the correct if_attribute