2016-05-13 8 views
1

Ich frage mich, ob es eine Möglichkeit gibt, mit meiner haml Vorlage eindeutig zu zählen, habe ich versucht mit group_by (&: product_id) ohne Erfolg. der folgende Code gibt mir eine Zählung aber nicht eindeutigGraf distinct in haml Vorlage

- @suppliers.each do |supplier| 
     %tr 
      %td.mdl-data-table__cell--non-numeric= link_to supplier.name, edit_admin_supplier_path(supplier) 
      %td.mdl-data-table__cell--non-numeric= supplier.variants.product.count 
+0

Fragen Sie nicht in der Ansicht, wenn möglich. Auch dies wird Ihnen eine böse n + 1 Abfrage geben. – max

+0

sagst du ich sollte diese Abfrage innerhalb des Modells durchführen? –

+0

Oder in der Steuerung - Sie werden wahrscheinlich eine Verknüpfung mit einer Unterabfrage verwenden, um die Anzahl abzurufen. Wie genau das geht, hängt davon ab, welche DB und das Schema. – max

Antwort

1

Sie benötigen Distinct Count in einer Abfrage select Aufruf angeben. Sie können es wie folgt verwenden:

supplier.variants.product.select("DISTINCT COUNT(*) AS COUNT") 

nicht wirklich zu wissen, wie Ihr Schema und Modelle entwickelt werden, so dass die select brauchen könnte früher in die Abfrage verkettet werden. Sie können dies jedoch sicher in Ihren HAML einfügen.

Wie Max bereits darauf hingewiesen hat, vermeiden Sie, wenn möglich, Fragen in Ihrer Sicht. Wenn es nicht möglich ist, überdenken Sie Ihr Design, weil es Sie auf eine schlechte Straße zwingen kann.