我有以下服务为我提供了一个月/周/今天的数组映射。
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]被传递,持有"月" /"周" /"今天",持有索引方法。
class TimeController < ApplicationController
def index
@entry = TimeService::INTERVAL_TIME.find {
|item| item[:id] == params[:time_id] }
end
end
然后我在我的视图中使用条目[:from]。一切都在开发中运作良好,但在生产中显示的价值为&#34;今天&#34;通常是几天前。我想可能会有一些缓存,但我只能找到人们在缓存范围时遇到问题。有谁知道如何解决这个问题?
答案 0 :(得分:1)
在您当前的实现中,:from
键将具有在您的类加载时计算的值,一次。
在开发模式下,会重新加载这些类,这就是为什么你没有看到&#34; cached&#34;价值观。
常量中的:from
键应该将lambdas作为值,以便在每次访问时计算值(您必须更改访问其值的方式,因为它们是&#39; ll是lambdas)。