2013-12-16 66 views
2

我對錶:對聯營企業和部門滑軌從協會加入兩個表

一名協理屬於一個部門(belongs_to的)和一個部門的許多同事(的has_many)

我」什麼,試圖do是每個部門的同事人數,並與數據做一個餅圖,我得到的圖表工作與基本的東西(Department.count)

我剛剛開始與軌道,我有問題與查詢

Associate.joins(:department).group(:name).count 

我所得到的是以下

Mysql2::Error: Column 'name' in field list is ambiguous: SELECT COUNT(*) AS count_all, name AS name FROM associates INNER JOIN departments ON departments . id = associates . department_id GROUP BY name

我試圖做一個選擇,找到我只是不能似乎得到它的權利

+3

組子句中使用的表的名稱:'組(「associates.name」)' – MrYoshiji

+0

曾任職像一個魅力!我應該想到這一點,但因爲我已經在加入部門,所以我不認爲這是必要的!非常感謝你 – CCastillo

回答

0

如果你正確有您的關聯設置,我相信你應該能夠做這樣的事情:

Department.find(<some_id>).associates.count 

或者,如果你把所有的部門,而你通過他們循環,讓我們在視圖中說的和你想獲得的所有罪名,你可以這樣做:

@departments = Deparment.all 

@departments.each do |department| 
    department.associates.count 
end 

你是關聯表需要一個department_id列。

+0

這不是優化的代碼,你應該讓DB處理計數過程。 – MrYoshiji

+0

我做到了這一點,它確實工作,它拉出數據庫中兩個不同的兩個部門的計數,但我希望能夠像這樣在我的圖表中顯示它 = pie_chart Department.joins(:associates).group(:部門=>:名稱).count – CCastillo

0

正如您對帖子的評論所述,您必須通過指定該表來解決模糊的name。您可以用字符串來執行的建議,或傳遞一個塊group_by

Associate.joins(:department).group_by(&:name).count