2010-11-29 181 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寶石。