如何在rails上使用ruby推送多维数组中的动态id

时间:2016-09-23 08:16:52

标签: ruby-on-rails arrays ruby activerecord

在示例中,我有两个模型,如客户端和评估,一个客户端有很多评估。

模型客户端

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]]

1 个答案:

答案 0 :(得分:0)

您应该使用includes并享受mapzip和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]]