所以我有一个Vendor
模型,一个Sale
模型。每当通过供应商下订单时,都会在我的销售模型中创建一个条目。
在我的vendor
模型上,我有 3 个缓存列。sales_today
, sales_this_week
, 和sales_lifetime
.
对于前两个,我计算如下:
def update_sales_today
today = Date.today.beginning_of_day
sales_today = Sale.where("created_at >= ?", today).find_all_by_vendor_id(self.id)
self.sales_today = 0
sales_today.each do |s|
self.sales_today = self.sales_today + s.amount
end
self.save
end
因此,每次访问该值时都会重置该值,并根据最新记录重新计算该值。
每周一次是相似的,但我使用一系列日期而不是今天。
但是......我不太确定如何处理终身数据。
我不想清除我的价值,并且Sale.amount
每次更新此记录时都必须汇总我的供应商的所有销售记录。这就是为什么我什至首先要实现缓存。
从性能的角度来看,解决这个问题的最佳方法是什么?