if_attribute的声明性auth问题

时间:2011-03-03 06:40:33

标签: ruby-on-rails declarative-authorization

我的授权规则:

role :tester do
  has_permission_on [:regression_test_test_runs, :regression_test_jobs], :to => :manage
  has_permission_on [:authorization_rules], :to => [:read, :manage]
  has_permission_on [:users], :to => :edit do
    if_attribute :user => is {user}
  end
end

我的用户控制器

filter_access_to :all, :attribute_check => true

为什么我仍然被拒绝了?我试过玩,我仍然无法得到当前用户,这是一个测试人员来编辑他自己的个人资料。

1 个答案:

答案 0 :(得分:0)

您可能需要将授权规则更改为:

role :tester do
  ...
  has_permission_on [:users], :to => :edit do
    if_attribute :id => is {user.id}
  end
end

我猜测用户没有名为user的属性,这就是原始示例失败的原因。您必须将用户的ID与当前用户的ID进行比较。