Измените 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 до (или во время) группировки?


person SomberClock    schedule 19.01.2013    source источник


Ответы (1)


Почему бы вам вместо этого не создать новое поле даты и времени «created_at_in_user_time»? Затем вы можете заполнить правильное время в этом поле в обратном вызове «before_create».

person Andrew Kozin    schedule 19.01.2013