如何编程用户首选项

时间:2008-08-28 18:12:38

标签: ruby-on-rails ruby user-controls user-interface

我正在使用Ruby on Rails作为内部网站。该站点的不同用户可以访问各种各样的数据和高度不同的数据视角。在这些不同类别的用户中,需要具有访问级别。在访问级别内,我需要能够添加其他类用户的功能。

在Intranet网站发布的“1.0版”中,我实现了一般用户类。我现在需要对用户访问实施更精细的控制。

问题是如何?

对于编写用户首选项(显示地图(或不显示);访问此功能,但不访问此功能)的普遍接受的做法是什么,而不会爆炸数据库模式并使用<%if feature_allowed%填充视图代码>标签无处不在。

4 个答案:

答案 0 :(得分:3)

另一种完全不同的方法是使用acts_as_authenticated和授权插件。这些表格将由插件构建(即用户角色角色 _users)。来自doc:

  

授权插件提供以下内容:

  • 在类或实例方法中检查授权的简单方法 使用#permit和#permit?

  • 进行级别
  • 使用整个应用程序,模型类或角色的角色进行授权 模型的实例(即特定对象)。

  • 一些类似英语的动态方法,可以利用已定义的角色。你将会 能够使用像“user.is_fan_of angelina”或“angelina.has_fans?”这样的方法, 其中'粉丝'仅在角色表中定义。

  • 选择一个mixin,以达到所需的数据库复杂程度。对于 所有功能,您将需要使用“对象角色表”(见下文)

答案 1 :(得分:2)

  

使用<%if填充视图代码   feature_allowed%>标签无处不在。

我认为你不想这样做。假设所提出的替代方案都不可行,至少应考虑将这些检查转移到您的控制器中,您可以将它们重构为before_filter。

请参阅“使用Rails进行Agile Web开发”(第2版副本中的第158页)中的第11.3节,他们就是这样做的。

答案 2 :(得分:1)

看看这个permissions topic

答案 3 :(得分:0)

这是我正在寻找的更多...发布在这里以供将来参考。

http://metautonomo.us/2008/09/30/easy-role-based-authorization/