【发布时间】:2011-12-13 12:00:03
【问题描述】:
我目前正在开发一个 RoR 应用程序,用户可以在其中注册并拥有(比如说 20 种)图像格式的列表。这些图像格式有自己的模型。网站管理员可以添加或删除格式。用户应该能够激活或停用某些格式。
我想只为每个用户将 20 种格式添加到数据库中,但如果管理员选择删除或添加一种格式,那将不灵活。它们应该是一种更易于维护的方式吗?
【问题讨论】:
标签: ruby-on-rails configuration user-controls
我目前正在开发一个 RoR 应用程序,用户可以在其中注册并拥有(比如说 20 种)图像格式的列表。这些图像格式有自己的模型。网站管理员可以添加或删除格式。用户应该能够激活或停用某些格式。
我想只为每个用户将 20 种格式添加到数据库中,但如果管理员选择删除或添加一种格式,那将不灵活。它们应该是一种更易于维护的方式吗?
【问题讨论】:
标签: ruby-on-rails configuration user-controls
你的解释不是很详细。特别是我错过了问题中的“默认”设置。
第一件事(简单的): 管理员可以为他希望在网站上允许的每种格式创建一个条目。所以表中应该只有一个这样的条目
用户可以从这些格式中选择几种(最多限制?)为什么他们需要特别选择它们?他们不能只使用管理员允许的一切吗?如果管理员删除格式,上传的图片会怎样?
无论如何,最好是 User 和 ImageFormat 之间的 has_and_belongs_to_many 关系。如果需要任何额外的数据,或者构建这个桥的另一个模型(UserImageFormat)。
对于管理员删除某些格式的情况,您可以通过多种方式进行处理。您可以在格式记录中添加一个“活动”标志,然后在每次使用模型时检查它,或者您实际上只是删除此记录(在这种情况下,请确保您的关联设置为 :dependent => :destroy 所以所有记录将用户连接到格式的连接也会被破坏。(编写测试以确保这一点)
也许您可以找到一些有助于解决此问题的 gem 或插件。 This article 可能会给您更多帮助。也许一些身份验证插件可以添加访问控制。但我认为您的需求(用户可以以某种方式影响他可以使用/访问的内容)可能太特殊了,因为此类工作的大多数 gem 更有可能解决以管理员为中心的访问控制。
【讨论】: