Rails 3 应用/用户设置的最佳实践是什么?

19

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

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

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

注意:我看过这个问题,其中包含序列化哈希响应,但在我的特定情况下,需要能够根据用户的设置查询数据库 - 我认为序列化哈希在那种情况下不太适用。


1
作为对此的跟进,如果您只是寻找系统范围的配置,那么有一个看起来不错的新选项-https://github.com/paulca/configurable_engine - Kevin Ansfield
谢谢你,看起来是一个很棒的宝石。 - Pierre
可能是存储应用程序配置的Ruby on Rails问题的重复。 - prograils
4个回答

20

2
而且这个是110hz的rails-settings带缓存的分支:) - Sergii Mostovyi

4

我不确定是否需要查找一个库来完成这个功能。

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

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


感谢您的回复。以上两种方法都是有效的。最终,我选择了Rails 3分支的rails-settings gem,因为它还可以轻松地将设置应用于多个模型类型(我有全局设置以及管理员、用户和用户个人试镜等设置)。 - Kevin Ansfield
1
我在Rails 3.2中使用被接受答案中的gem时遇到了很多麻烦。但是这个解决方案让我在几分钟内就能运行起来了。我对我的数据库列进行了YAML序列化,并设置了一个像这里提到的初始化程序https://dev59.com/43RB5IYBdhLWcg3wiHv7 - Kansha

2

您可能还想看看https://github.com/railsjedi/rails_config。它有很多功能,包括:

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

0

对于Rails 4,如果您正在使用PostgreSQL,可以使用HStore,它就像一个可序列化的属性,但您可以使用SQL查询它。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接