2010-11-29 182 views
19

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

是否有任何宝石或最佳实践适合这种情况?

我发现了一些宝石和博客文章,但他们都追溯到2006-08年,不再维护。任何指针,将不胜感激,谢谢。

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

+1

作为一个后续,如果你只是寻找系统范围的配置有一个新的选项看起来不错 - https://github.com/paulca/configurable_engine – 2011-02-10 13:41:27

+0

谢谢你,看起来像一个真棒宝石。 – Pierre 2011-10-11 14:55:54

+0

[Ruby on Rails - 存储应用程序配置]的可能重复(http://stackoverflow.com/questions/2127960/ruby-on-rails-storing-application-configuration) – prograils 2016-10-28 12:56:55

回答

4

不知道我会寻找一个函数库。

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

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

2

也可能想看看https://github.com/railsjedi/rails_config。当中它的许多功能:

  • 全球settings.yml中
  • 每环境设置文件(设置/ development.yml,设置/ production.yml等)
  • 本地设置文件(settings.local.yml ,设置/ development.local.yml等)
  • 嵌入式ERB支持
  • 的Rails 3/Padrino /西纳特拉支持
0

钢轨4,如果你正在使用postgresql,你可以使用HStore,它就像一个可序列化的属性,但是你可以用它进行SQL查询。

对于导轨3,您可以使用activerecord-postgres-hstore宝石。