声明性授权:限制特定属性的模型操作

时间:2013-02-24 17:05:28

标签: ruby-on-rails authorization declarative-authorization strong-parameters

我对rails非常陌生,我正在尝试设置一个授权系统,允许我控制用户可以修改模型的哪些属性。

我使用declarative_authorization进行基于角色的授权。这已经为我提供了很多功能:限制用户可以在视图中看到的内容取决于他的角色,他可以在控制器中执行哪些操作,以及基本上允许他在模型上执行哪些操作。

但是,我根本无法找到关于如何根据角色限制模型特定属性的操作的答案。

实施例: 允许具有:guest角色的用户更新用户帐户的某些属性:当他尝试使用错误的密码登录时,我想更新将使该帐户处于非活动状态的用户帐户的特定字段。但是:guest角色永远不能更改此用户帐户的昵称。

因此我在我的用户模型中使用“using_access_control”方法,但这要么为所有属性提供帐户的“更新”权限,要么根据角色没有“更新”权限。

我理解“strong_parameters”是一个基本上可以提供此类功能的宝石,但我不知道如何将“declarative_authorization”和“strong_parameters”放在一起,或者如何简单地使用“declarative_authorization”。

有人能指出我的解决方案吗?

非常感谢!

1 个答案:

答案 0 :(得分:-1)

Authorization::Maintenance::without_access_control do
  # do something
end

我希望这很有帮助。