0
일부 데이터베이스 쿼리 속도를 높이기 위해 memoization을 사용하려고 시도 중이며 사용자가 설정 한 날짜 매개 변수로 걸려 넘어졌습니다.매개 변수 변경을 기반으로 조건부를 작성하십시오.
def self.stats_by_user_id(start_date, end_date)
@stats_by_user_id ||= BingRecord.select([:user_id, :stats])
.where(date: start_date..end_date)
.where(user_id: ["9","22"])
.group_by(&:user_id)
end
def self.get_bing_result(user_id, start_date, end_date)
a = stats_by_user_id(start_date, end_date)[user_id]
b = a.map(&:stats)
result = b.reduce({}) do |o, hash|
o.merge(hash) { |_, v1, v2| v1.merge(v2) { |_, vv1, vv2| vv1 + vv2 } }
end
end
사용자는 PARAMS 통해 start_date
및 end_date
을 통과한다. 내 문제는 일단 @stats_by_user_id가 해당 매개 변수로 한 번 설정되면 새 매개 변수를 전달하는 모든 후속 날짜 변경이 무시된다는 것입니다.
params가 변경되었는지 확인하는 조건을 설정하고 싶습니다. 그러나이를 확인하는 방법을 찾을 수없는 것 같습니다. params가 업데이트되어 @stats_by_user_id에 값을 재 할당 할 수 있는지 확인하는 방법이 있습니까?