2012-11-06 50 views
1

我有一個ActiveRecord類,需要看具體取決於配置交換機上的兩個不同的表,所以我打算做到以下幾點:ActiveRecord緩存table_name?

def table_name 
    config_is_on? ? :table1 : :table2 
end 

我想知道的table_name方法是始終在針對此模型運行查詢時調用:應用程序是而不是將在配置更改時重新啓動,因此無法高速緩存此值。

ActiveRecord總是在應用程序啓動/初始化期間評估table_name或只是一次?如果它被緩存,我如何強制它每次評估table_name

+0

嘗試'set_table_name'並檢查 – Amar

+0

在'development'上做這件事只會給人一種錯誤的安全感 - 問題就在於'生產' –

+0

發生的情況根據我的知識,它將用於生產 – Amar

回答

0

不僅是表名,也是列定義。您最好使用像公寓寶石一樣的架構設置。根據請求的某種狀態,數據庫中的實際表搜索路徑被設置爲某種東西。因此,您可以執行兩個模式,一個使用第一個表格,一個使用第二個表格(其餘表格可能只在一個模式上),並更改搜索路徑,您將獲得不同的數據。