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.

È stato utile?

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
scroll top