Come isolare / recuperare / conteggio un sottoinsieme di record restituiti in Rails
-
01-10-2019 - |
Domanda
Sto scrivendo un cruscotto rapporti per un'applicazione Rails. Il cruscotto è per i dati utente, e contare multipla attualmente è in esecuzione un query di selezione per costruire le quattro o cinque rapporti sulla pagina. Sono sicuro che ci sia un modo più efficace per farlo. Come potrei fare per strutturare il metodo di controllo in modo che venga eseguito solo una query, e quindi analizza / suddivide i sottoinsiemi necessari per i singoli rapporti?
Ad esempio, un utente ha un genere, l'età, e una gamma di reddito. Invece di fare
@men = User.count(:conditions => ['gender = ?', 'm']
@women = User.count(:conditions => ['gender = ?', 'f']
@age = User.count(:conditions => ['age_range = ?', 1]
etc.
Posso solo fare un singolo
User.find(:all, :select => 'id,gender,age_range,income_range')
E poi analizzare fuori quello che mi serve?
Ogni aiuto è apprezzato.
Grazie.
Soluzione
Credo che si può fare questo
@users = User.all
@men = @users.select{|u| u.gender == 'm'}.size
@women = @users.select{|u| u.gender == 'f'}.size
@age = @users.select{|u| u.age_range == 1}.size
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow