Michael Michael - 2 months ago 35
SQL Question

Deprecated count in rails 4

a = Session.where(:date_at => date_from..date_to).
order("date_at").
count("DISTINCT(user_id)",
:group => "date(convert_tz(date_at, 'UTC', 'Europe/Warsaw'))")


How can I write this in Rails 4 ?

This generates error:

DEPRECATION WARNING: Relation#calculate with finder options is deprecated. Please build a scope and then call calculate on it instead. (called from block (2 levels) in <top (required)> at /Users/xxx/Desktop/DEPLOY/d1_mysql/d1/app/admin/user.rb:11)
DEPRECATION WARNING: The :distinct option for `Relation#count` is deprecated. Please use `Relation#distinct` instead. (eg. `relation.distinct.count`). (called from block (2 levels) in <top (required)> at /Users/xxx/Desktop/DEPLOY/d1_mysql/d1/app/admin/user.rb:11)

Answer

More rails 4 way . .

Session.where(date_at: date_from..date_to).select('distinct user_id')
       .group("date(convert_tz(date_at, 'UTC', 'Europe/Warsaw'))").count