在按日期分组之前修改查询中的created_at

我有这个查询,我用来抓取特定用户的购买,然后映射到一个哈希,以便它可以显示在图表中。

orders_graph = user.orders.where(:purchased_period => current_period). group("date(created_at)"). select("purchased_at, sum(total_price) as total_price") (start_time.to_date..Date.today).map do |date| order = orders_by_day.detect { |order| order.created_at.in_time_zone("#{user.time_zone}").to_date == date } order && order.total_price.to_f || 0 

但是,由于基于服务器时间的查询分组而不是用户时间(这是我想要的),图表通常是不正确的。 无论如何在分组之前(或之前)修改created_at时间?

为什么不创建新的日期时间字段’created_at_in_user_time’呢? 然后你可以在’before_create’回调中填充该字段的正确时间。