Ho il seguente modello:rotaie 3 GROUP BY e somma
activity_types: id, name
activities: id, id_activity_type, occurrences, date (other fields)
Il negozio tabella attività quante volte si verifica un'attività di giorno. Ma ora voglio mostrare all'utente quante attività di ogni tipo si sono verificate per mese.
ho ricevuto la seguente soluzione based on this post che sembra ok:
Activity.all(:joins => :activity_types,
:select => "activity_types.id, activity_types.name, SUM(activities.occurrences) as occurrences",
:group => "activity_types.id, activity_types.name",
:order => "activity_types.id")
ma questo sembra un sacco di codice per le norme e le rotaie rails API says it's deprecated.
ho trovato la soluzione a seguito della quale è molto semplice:
Activity.sum(:occurrences).group(:activity_type_id)
che restituisce un hash con activity_type_id => occorrenze.
Cosa devo fare per ottenere il seguente hash: activity_type.name => occorrenze?
'activity_types: id, name' qui activity_type nome sta per essere UniQ? raggruppare e ordinare su activity_types.id è solo perché volevi un hash ordinato basato su activity_types.id, giusto? –