【问题标题】:How to program user preferences如何编程用户偏好
【发布时间】:2010-09-07 04:08:54
【问题描述】:
我将 Ruby on Rails 用于内部站点。该网站的不同用户可以访问各种各样的数据和高度不同的数据观点。在这些不同类别的用户中,需要有访问级别。在访问级别内,我需要能够添加其他用户类别的功能。
在已发布的“1.0 版”的内网站点中,我实现了用户的一般类。我现在需要对用户访问进行更细粒度的控制。
问题是怎么做的?
在不扩展数据库架构并使用 填充视图代码的情况下,对用户偏好进行编码(显示(或不显示)地图;访问此功能,但不是此功能)的普遍接受做法是什么到处都是标签。
【问题讨论】:
标签:
ruby-on-rails
ruby
user-controls
user-interface
【解决方案1】:
另一种完全不同的方法是使用acts_as_authenticated 和授权插件。这些表将由插件(即users、roles 和roles_users)构建。来自文档:
授权插件提供以下功能:
在类或实例方法中检查授权的简单方法
使用#permit 和#permit 级别?
使用角色为整个应用程序、模型类或
模型的实例(即特定对象)。
一些类似于英语的动态方法,它们利用已定义的角色。你会
能够使用“user.is_fan_of angelina”或“angelina.has_fans?”等方法,
其中“粉丝”仅在角色表中定义。
根据您所需的数据库复杂性级别挑选一个 mixin。为了
所有功能,您将需要使用“对象角色表”(见下文)
【解决方案2】:
用 标签无处不在。
我认为你不想这样做。假设建议的替代方案都不可行,至少您应该考虑将这些检查转移到您的控制器中,在那里您可以将它们重构为 before_filter。
请参阅“使用 Rails 进行敏捷 Web 开发”中的第 11.3 节(我的第 2 版副本中的第 158 页),他们正是这样做的。