gpt4 book ai didi

ruby-on-rails - 在 Rails 应用程序中存储全局应用程序设置的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-04 12:01:49 24 4
gpt4 key购买 nike

我想处理两种全局配置设置:

  • 用户可以更改的设置,例如是否发送某些事件的通知邮件。
  • 与特定产品版本相关的设置,例如禁用免费版本中的功能,该功能仅在商业版本中可用。

  • 存储这些设置的最佳方式是什么?数据库,配置文件,在源代码中硬编码,...?

    最佳答案

    对于这两种情况数据库。您将为多人/产品使用相同的结构,因此这是有道理的。它还允许您在不重新启动服务器的情况下进行更改。

    我过去是这样处理的:
    对于特定于用户的设置,我创建了一个 UserSettings 模型/表,它与用户具有一对一的关系。这样做的原因是我的大部分涉及用户的操作不需要加载这些设置,因此它们仅在我需要时才包含在用户从数据库加载时。

    当我这样做时,我通常会将我的列名分组,以便我可以编写基于名称动态创建的助手。这意味着除非我添加具有不同命名方案的 View ,否则我不必修改我的 View 以合并新设置。

    对于特定于产品的设置,这取决于您的工作方式。有几种方法可以解释您的问题。

    我读它的方式是您要决定产品级别。哪些设置用户可以覆盖或禁用用户的设置。并可能定义一些特定于产品的设置。

    我会使用一对多的产品来设置关系。设置表会很简单(product_id、setting_name、setting_default_value、allow_user_change)

    这做了很多事情。它让您拥有不同产品的可变设置列表(非常适合您提供许多不同产品而不是不同级别的服务访问权限的情况)。它还允许您定义用户可以/不能更改的设置并为该产品类型提供值。这可以从管理员 View 中更改,而无需重新启动应用程序。它也与用户设置无关,如果用户没有在 product_settings 中列出的设置,则不会有任何问题。

    缺点是您将在此表中有多个常用设置。我会将每个产品具有不同值的设置移动到产品表中的字段。

    您还必须编写验证以确保用户不会更改他们的产品认为他们不能更改的设置。您还必须编写辅助方法来合并产品和用户端的设置。

    关于ruby-on-rails - 在 Rails 应用程序中存储全局应用程序设置的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550972/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com