2016-05-13 29 views
1

我想知道是否有一種方法來統計與我的哈姆模板不同,我嘗試使用group_by(&:product_id)沒有成功。下面的代碼給我一個計數,但不是唯一的哈姆模板內清除計數

- @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

如果可能,請勿在視圖中查詢。這也會給你一個討厭的n + 1查詢。 – max

+0

你是說我應該在模型中執行這個查詢嗎? –

+0

或者在控制器中 - 您很可能希望使用帶有子查詢的聯接來獲取計數。具體怎麼做取決於數據庫和模式。 – max

回答

1

你需要在查詢select調用指定重複計數。您可以使用它像這樣:

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

不是真的知道如何您的架構和模型的設計,所以select可能需要更早的進入了查詢鏈接。但是,您肯定可以將其插入到HAML中。

正如Max已經指出的那樣,儘可能避免在您的視圖中進行查詢。如果這是不可能的,重新考慮你的設計,因爲它可能會迫使你走上一條糟糕的道路。