2015-12-04 104 views
0

我有一個叫做SystemSettings的模型,其名稱和值都是。這是我爲我的應用程序存儲大部分配置的地方。我需要能夠在我的rails 3.2應用程序中的production.rb中訪問它。你會如何去做這件事?訪問production.rb rails 3中的模型

回答

2

由於Rails的配置,如production.rb是ActiveRecord的前讀取被初始化,你將需要使用一個回調:

Rails.application.configure do 
    ActiveSupport.on_load(:active_record) do 
    config.custom_variable = SystemSettings.find_by(name: "Foo").value 
    end 
end 

但由於回調執行後,當ActiveRecord的是準備好你不能立即使用它的價值這就是爲什麼您的方法可能由於race conditions而存在缺陷。

除非你正在構建一個類似CMS的東西,你需要提供一個用戶界面來編輯系統設置,否則使用environmental variables會更好。它們立即可以從內存中獲得,並且沒有數據庫查詢的開銷。