2013-08-28 17 views
5
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'))") 

Come posso scrivere in Rails 4?Conteggio obsoleto in binari 4

Questo genera l'errore:

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) 

risposta

8

Più rotaie a 4 vie. .

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

Grazie. Ogni due risposte sono corrette – Wordica

2

Si può provare con questo:

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

@ Michael "calcolare con opzioni Finder è deprecato" significa che non si può fare 'count ("... ": group =>" ...")'. Devi usare '.group (" ... "). Count' invece. Il secondo avviso di deprecazione è ovvio. È chiaramente ciò che devi fare. – Mischa