【问题标题】:Best way to have default user settings in Ruby on Rails?在 Ruby on Rails 中使用默认用户设置的最佳方式?
【发布时间】:2011-12-13 12:00:03
【问题描述】:

我目前正在开发一个 RoR 应用程序,用户可以在其中注册并拥有(比如说 20 种)图像格式的列表。这些图像格式有自己的模型。网站管理员可以添加或删除格式。用户应该能够激活或停用某些格式。

我想只为每个用户将 20 种格式添加到数据库中,但如果管理员选择删除或添加一种格式,那将不灵活。它们应该是一种更易于维护的方式吗?

【问题讨论】:

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


    【解决方案1】:

    你的解释不是很详细。特别是我错过了问题中的“默认”设置。

    第一件事(简单的): 管理员可以为他希望在网站上允许的每种格式创建一个条目。所以表中应该只有一个这样的条目

    用户可以从这些格式中选择几种(最多限制?)为什么他们需要特别选择它们?他们不能只使用管理员允许的一切吗?如果管理员删除格式,上传的图片会怎样?

    无论如何,最好是 User 和 ImageFormat 之间的 has_and_belongs_to_many 关系。如果需要任何额外的数据,或者构建这个桥的另一个模型(UserImageFormat)。

    对于管理员删除某些格式的情况,您可以通过多种方式进行处理。您可以在格式记录中添加一个“活动”标志,然后在每次使用模型时检查它,或者您实际上只是删除此记录(在这种情况下,请确保您的关联设置为 :dependent => :destroy 所以所有记录将用户连接到格式的连接也会被破坏。(编写测试以确保这一点)

    也许您可以找到一些有助于解决此问题的 gem 或插件。 This article 可能会给您更多帮助。也许一些身份验证插件可以添加访问控制。但我认为您的需求(用户可以以某种方式影响他可以使用/访问的内容)可能太特殊了,因为此类工作的大多数 gem 更有可能解决以管理员为中心的访问控制。

    【讨论】:

    • 感谢您提供的信息,抱歉不够详细。要点是每个用户都可以访问并在注册时激活的 20 种图像格式。因此默认设置是:所有格式都被激活。用户仍然可以选择停用某些格式,但他们不能删除或添加格式(只有管理员)。
    • @Sweam,在这种情况下,我会按照我的解释寻求解决方案。 (我在回答中添加了一些细节)
    • 如果我错了,请纠正我。但是当用户注册时,没有任何 has_and_belongs_to_many 关系,尽管我希望每个新用户都激活 20 种格式。我错过了什么吗?
    • @Sweam:好点。是的,在这种情况下,您必须与用户一起创建它们。 (如果管理员可能添加新格式,则为每个用户创建一个)。
    • 好的,谢谢。但是这是Rails的方法吗?当您拥有庞大的用户群时,似乎很难维护。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多