2016-09-23 4 views
0

月/週/今日の配列マッピングを私に提供する以下のサービスがあります。 [:ID]私のコントローラのparamsで生産モードでキャッシュされた時間値

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 

は、インデックスメソッドに "月"/"週"/"今日"、のいずれかを保持し、渡されます。

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

次に、私の見解で[:from]という項目を使用します。開発中はすべてうまく動作しますが、プロダクションでは「今日」の値は通常数日前の値です。キャッシュがあるかもしれないと思うけど、スコープがキャッシュされている人には問題があるだけだ。誰でもこれがどのように解決できるのか知っていますか?

答えて

1

現在の実装では、:fromのキーは、クラスがロードされた時点で計算された値を持ちます。

開発モードでは、クラスがリロードされるため、そこに「キャッシュされた」値が表示されません。

定数に含まれるキーには、アクセスするたびに値を計算するための値としてラムダが必要です(ラムダになるので値にアクセスする方法を変更する必要があります)。

関連する問題