在示例中,我有两个模型,如客户端和评估,一个客户端有很多评估。
模型客户端
has_many :assessments
模型评估
belongs_to :client
示例:我有3个客户。
client1有3个评估,ID为[1,4,7]
client2有3个评估,ID为[2,5,8]
client3有两个评估ID为[3,6]
在查询中,我想让所有客户进行所有初步评估,并继续进行第二次评估,第三次评估,...
与数组有效关系的结果应为
[[1, 2, 3], [4, 5, 6], [7, 8]]
答案 0 :(得分:0)
您应该使用includes
并享受map
,zip
和splat operator
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]]