0
我試圖利用memoization來加速一些數據庫查詢,我遇到了用戶設置的日期參數的障礙。寫入基於params的條件變化
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已被更改,但我似乎無法弄清楚如何檢查。有沒有辦法檢查參數是否已更新,以便我可以將值重新分配給@stats_by_user_id?