2016-09-23 38 views
0

我有以下服務提供給我一個數組映射月/周/今天的時間。在生產模式下緩存的時間值

module Admin 
    class TimeService 
    INTERVAL_TIME = [ 
     { :id => "month", :from => Time.zone.now.beginning_of_month }, 
     { :id => "week", :from => Time.zone.now.beginning_of_week }, 
     { :id => "today", :from => Time.zone.now.beginning_of_day } 
    ] 
    end 
end 

在我的控制器中,params [:id]被傳遞,持有「month」/「week」/「today」到索引方法。

class TimeController < ApplicationController 
    def index 
    @entry = TimeService::INTERVAL_TIME.find { 
           |item| item[:id] == params[:time_id] } 
    end 
end 

然後我在我的視圖中使用條目[:from]。在開發過程中一切正常,但在生產中,「今日」顯示的價值通常是前幾天。我想可能有一些緩存正在進行,但我只能找到遇到範圍緩存問題的人。任何人都知道如何解決這個問題?

回答

1

在您當前的實現中,:from鍵將具有在您的類加載一次時計算出的值。

在開發模式下,類被重新加載,這就是爲什麼你沒有看到「緩存」值。

您常量中的:from鍵應該有lambda作爲值,以便每次訪問它們時計算值(您必須更改訪問其值的方式,因爲它們將是lambda表達式)。