2013-05-23 11 views
7

Sto utilizzando la groupdate e il chartkick per provare a visualizzare un grafico che mostra la crescita (e la caduta) della nostra base di utenti nel tempo.Rails: utilizzo di groupdate e chartkick per creare un grafico utente cumulativo

Utilizzando il seguente funziona bene in un grafico a colonne, ma va in tilt in un grafico a linee:

sum=0 
User.group_by_day(:created_at).count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge) 

Qualcuno mi può puntare nella giusta direzione? O c'è un modo migliore per farlo funzionare?

risposta

10

risposta di Martin è stato vicino, ma ho finito per usare:

User.group_by_week(:created_at).order("week asc").count.map { |x,y| { x => (sum += y)} }.reduce({}, :merge) 

Per ottenere settimanale - notare l'ordine ("Settimana asc") - è quello che è stato risolto ...

11

È perché è necessario ordinare prima di fare la somma cumulativa.

Prova questo:

sum=0 
User.group_by_day(:created_at).count.to_a.sort{|x,y| x[0] <=> y[0]}.map { |x,y| { x => (sum += y)} }.reduce({}, :merge) 
+0

Grazie - In realtà ho finito per utilizzare User.group_by_week (: created_at) .order ("settimana asc"). Count.map {| x, y | {x => (sum + = y)}} .reduce ({},: merge) come non ha bisogno della granularità del quotidiano – Les

Problemi correlati