4 Stimmen

Gruppieren und Zählen in Rails

Ich habe dieses Stück Code und erhalte ein leeres Objekt.

@results = PollRoles.find(
            :all, 
            :select => 'option_id, count(*) count', 
            :group => 'option_id', 
            :conditions => ["poll_id = ?", @poll.id])

Ist dies die richtige Art, die Anfrage zu schreiben? Ich möchte eine Sammlung von Datensätzen, die eine Options-ID haben, und die Anzahl der Male, die diese Options-ID im PollRoles-Modell gefunden wird.

EDIT : So iteriere ich durch die Ergebnisse:

<% @results.each do |result| %>
            <% @option = Option.find_by_id(result.option_id) %>
            <%= @option.question %> <%= result.count %>
        <% end %>

0voto

Aditya Mukherji Punkte 8875

Sie möchten Folgendes verwenden diese Funktion um Dinge wie diese zu tun
PollRoles.count(:all, :group => 'option_id') sollte eine Hash-Abbildung jedes option_id mit der Anzahl der übereinstimmenden Datensätze.

0voto

klochner Punkte 7949

Was bekommen Sie dafür?

PollRoles.find(:all,:conditions=>["poll_id = ?",@poll.id]).collect{|p| p.option_id}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X