2016-09-23 15 views
0

例如,我有兩個模型,例如Client和Assessment,一個客戶端有很多評估。如何在rails上使用ruby推動多維數組中的動態id

模型客戶

has_many :assessments 

模型評估

belongs_to :client 

例如:我有3個客戶端。

客戶端1有3個評估ID爲[1,4,7]

客戶端2有3個評估ID爲[2,5,8]

client3有2個評估ID爲[3,6]

與查詢我想所有的客戶提供所有的第一次評估,並繼續評估二,三評估,...

從積極的關係陣列結果應該是

[[1, 2, 3], [4, 5, 6], [7, 8]] 
+0

享受你的意思是「所有首次評估」? 'Client'上的'has_many'關聯沒有排序,所以沒有「第一個」,除非你的意思是用最低的'id'評估?另外,你能解釋一下爲什麼你想這樣做嗎? –

回答

0

你應該使用includesmapzip和圖示操作

array = Client.includes(:assessments).map{ |k| k.assesments.pluck(:id)} 
first, *other = array 
new_array = first.zip(*other).compact 
#=>[[1, 2, 3], [4, 5, 6], [7, 8]]