Rails 3 应用程序/用户设置最佳实践?

Posted

技术标签:

【中文标题】Rails 3 应用程序/用户设置最佳实践?【英文标题】:Rails 3 Application/User Settings best practice? 【发布时间】:2011-05-17 10:11:49 【问题描述】:

我目前需要在 Rails 3 应用程序中允许管理员可配置的全局设置以及每个用户可配置的设置。

是否有适合这种情况的 gem 或最佳实践?

我找到了一些 gem 和博客文章,但它们都可以追溯到 2006-08 年并且不再维护。任何指针将不胜感激,谢谢。

注意:我已经看到 this question 带有序列化哈希响应,但在我的特殊情况下,需要根据用户的设置查询数据库的用户 - 我认为序列化哈希在这种情况下不会很好地工作.

【问题讨论】:

作为后续,如果您只是在寻找系统范围的配置,有一个看起来不错的新选项 - github.com/paulca/configurable_engine 谢谢你,看起来像一个很棒的宝石。 Ruby on Rails - Storing application configuration的可能重复 【参考方案1】:

一如既往地寻求帮助后,我的搜索取得了成果。找到了 Georg Ledermann's fork of rails-settings,看起来它可以满足我的需要。

【讨论】:

而this one 是 110hz 的带有缓存的 rails-settings 的一个分支:)【参考方案2】:

不确定我是否会为此函数寻找库。

对于全局设置,我将创建一个 config/application.yml 文件并在 environment.rb 中读取它并将其设置为 APP_CONFIG 全局。然后,我将通过使用 json 编码的设置哈希向用户表添加一个文本列来覆盖每个用户的这些设置。向用户模型添加一个方法,该方法获取 APP_CONFIG 并对解码的用户设置进行深度合并。

另一种选择是创建一个设置表,其中包含一个 user_id 列和每个设置的列。具有空 user_id 的一行将代表全局设置。如果当前用户存在一行,则任何非零值都将覆盖全局设置行。

【讨论】:

感谢您的回复。以上两种方法绝对是有效的。最后,我选择了 Rails-settings gem 的 Rails 3 分支,因为它还可以轻松地将设置应用于多种模型类型(我有全局设置以及管理员、用户和用户的个人试镜等设置)。 Rails 3.2 中接受的答案中的 gem 遇到了很多麻烦。这个解决方案我在几分钟内就启动并运行了。我为我的数据库列进行了 YAML 序列化,并设置了一个初始化程序,就像这里提到的 ***.com/questions/592554/…【参考方案3】:

可能还想看看https://github.com/railsjedi/rails_config。其中包括许多功能:

全局设置.yml 每个环境的设置文件(settings/development.yml、settings/production.yml 等) 本地设置文件(settings.local.yml、settings/development.local.yml 等) 嵌入式 ERB 支持 Rails 3 / Padrino / Sinatra 支持

【讨论】:

【参考方案4】:

对于rails 4,如果你使用的是postgresql,你可以使用HStore,这就像一个可序列化的属性,但是你用它来做SQL查询。

对于 rails 3,您可以使用 activerecord-postgres-hstore gem。

【讨论】:

以上是关于Rails 3 应用程序/用户设置最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

架构最佳实践:Rails 和移动/Web 应用程序

使用 Capistrano 将 Rails 应用程序部署到多个服务器 - 最佳实践

Rails 中嵌套资源视图的最佳实践?

在 Ruby/Rails 中隔离数据访问层的最佳实践

在 Rails 中引入类似触发器的功能的最佳实践

在 Win32 Delphi 应用程序中存储用户首选项和设置的最佳实践是啥?