提问人:salt.racer 提问时间:8/29/2008 最后编辑:salt.racer 更新时间:10/11/2008 访问量:950
如何对用户首选项进行编程
How to program user preferences
问:
我正在将 Ruby on Rails 用于内部站点。该网站的不同用户可以访问各种各样的数据和高度不同的数据视角。在这些不同类别的用户中,需要有访问级别。在访问级别内,我需要能够添加来自其他类别用户的功能。
在发布的 Intranet 站点的“1.0 版”中,我实现了用户的常规类。现在,我需要对用户访问实现更精细的控制。
问题是如何?
在不分解数据库架构并在 feature_allowed<% 中填充视图代码(如果到处都有 %> 标记,则对用户首选项进行编码(显示(或不显示地图);访问此功能,而不是访问此功能)的普遍接受的做法是什么?
答:
另一种完全不同的方法是使用acts_as_authenticated和授权插件。这些表将由插件(即用户、角色和角色_users)构建。从文档:
授权插件提供以下功能:
在类或实例方法中检查授权的简单方法 使用 #permit 和 #permit 的水平?
使用整个应用程序、模型类或 模型(即特定对象)的实例。
一些类似英语的动态方法,利用定义的角色。你会 能够使用“user.is_fan_of安吉丽娜”或“angelina.has_fans?”等方法, 其中“粉丝”仅在角色表中定义。
根据所需的数据库复杂程度挑选一个 mixin。为 所有功能,您将需要使用“对象角色表”(见下文)
使用 <% 填充视图代码 if feature_allowed %> 标记无处不在。
我不认为你想那样做。假设建议的替代方案都不可行,至少您应该考虑将这些检查转移到控制器中,在那里您可以将它们重构为before_filter。
参见 “Agile Web Development With Rails” 中的第 11.3 节(我第 2 版副本中的第 158 页),他们就是这样做的。
评论