gpt4 book ai didi

ruby-on-rails - 查找购买金额

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:30 26 4
gpt4 key购买 nike

每个用户都有很多购买。我想找出前 28 天每一天的总和。

t1 = Time.now - (28.days)
t2 = Time.now
@dailysum = Array.new(29)
(0..29).each do |i|
@dailysum[i] = @user.purchases.where(:created_at => (Time.now-(i.day))..(Time.now-((i-1).days))).sum(:amount)
end

这行得通,但我确信有更好的方法来解决这个问题。有什么建议吗?

最佳答案

您需要传递一个 :group 选项来求和。 :group 选项的值因您的数据库而异。我会提供一个pg和mysql版本。

# purchases.rb
def self.recent(num)
where('created_at > ?', num.days.ago
end

# PG version
@user.purchases.recent.sum(:amount, group: "DATE_PART('year', purchases.created_at) || '-' || DATE_PART('month', purchases.created_at) || '-' || DATE_PART('day', purchases.created_at)")

# mysql version
@user.purchases.recent.sum(:amount, group: "DATE(purchases.created_at)")

这将产生一个散列,其中键是日期,值是购买的总和。

与过去 28 天每天的查询相比,这将减少 27 次查询

关于ruby-on-rails - 查找购买金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com