用戶有客戶,其中有具有任務項目。
我試圖建立與陣列[名稱,計數]以發送到谷歌圖 - 我有所有的人,但一個解決:
def task_by_project(user)
task_arr = user.projects.joins(:tasks).where("tasks.completed = ?", "0").uniq.collect { |d| [d.name, d.tasks.count] }.to_a
task_arr.unshift(['Projects', 'Uncompleted Tasks'])
return task_arr
end
該查詢返回11項。這實際上就是這個用戶的所有條目。它完全繞過了where
。有7個未完成的4個完成。
在我使其與循環略有不同的觀點:
<% current_user.projects.uniq.each do |project| %>
<%= link_to project.name + " || " + project.tasks.where(completed: 0).count.to_s + " tasks remaining currently", project, :class => "collection-item" %>
<% end %>
</div>
我相當確信它與我的如何查詢關聯此深的誤解做。
END RESULT是我需要項目的名稱,並計算它有多少個任務。
我通過查詢加入Task
回到Project
Project.ID
- 但我不知道如何做到這一點與整個集合。
(的「不印字」的目的是因爲其他明智我最終的[[['Projects', 'Tasks'], [['First Record, 2] ... ]]
結果格式不GCharts格式。獻媚殺死它關閉-too-多)
如果OP已爲該列設置了默認值,則應該不需要'completed:[0,nil]'。 – max
我相信,如果你刪除'nil',那麼它將不包含沒有任何任務的項目。如果這是預期的情況,那麼'left_joins'也可以改爲'joins'。 – kaspernj
不,因爲你正在做一個'LEFT OUTER JOIN',即使它們在連接中沒有任何匹配,也會返回行。我猜它是一個錯誤的枚舉或布爾型列被錯誤地定義爲一個整數。在這兩種情況下,它都應該有一個默認值,因爲你不想要一個null/indeterminate狀態。 – max