2012-09-27 65 views
1

我有一個RoR的應用程序,並多次表之間的連接,並返回結果爲JSON返回給客戶端。 我需要搞清楚如何只發送唯一列值的幫助。 對於例如,如果你有一個員工和部門表,做一個連接上兩個將返回:Rails的操縱SQL數據返回唯一列值

Physics John 
Physics Joe 
Math  Charlie 
Math  Sheila 

我怎樣才能將數據返回給客戶端刪除重複值,例如

Physics => { John, Joe } 
Math = > { charlie, Sheila } 

我想通過電線減少不必要的重複數據發送。

有什麼想法?

編輯:

改成了這個(發現它堆棧溢出)和它的工作:

@lec_hash = @lectures.inject({}) do | result, row | 
    result[row.subject] = [] if result[row.subject].nil? 
    result[row.subject] << row.name 
    result 
end 

回答

0

準備一個散列結果,其中關鍵是你的主題名稱和值名稱的數組選擇的主題

hash = Hash.new {|h,k| h[k] = [] } 
result.each do |row| 
    hash[ row.subject] << row.name 
end 

假設result是AR記錄陣列和模型具有subjectname(人的名字)的屬性(列)

,然後再轉換hash.to_json

+0

感謝阿米特。我想這一點,我也得到一個類型錯誤(不能轉換成字符串整數)。 – mentalic

+0

哪一行導致錯誤?你肯定結果的查詢和模型生成的數組中的結果是主題和名稱作爲列名? –

+0

雖然其不受和名稱,它們是VARCHAR fields..TypeError(不能轉換成字符串整數): 應用程序/控制器/ experiments_controller.rb:30:在'[]」 應用程序/控制器/ experiments_controller.rb: 30:在'block in get_experiment_data' app/controllers/experiments_controller.rb:29:在'each'中 app/controllers/experiments_controller.rb:29:在'get_experiment_data' – mentalic