【问题标题】:How to push dynamic id in multi-dimensional array with ruby on rails如何使用 ruby​​ on rails 在多维数组中推送动态 id
【发布时间】:2017-02-01 00:43:09
【问题描述】:

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

模型客户端

has_many :assessments

模型评估

belongs_to :client

示例:我有 3 个客户。

client1 有 3 个 ID 为 [1, 4, 7] 的评估

client2 有 3 个评估,ID 为 [2, 5, 8]

client3 有 2 个评估,ID 为 [3, 6]

在查询中,我想让所有客户完成所有第一次评估,然后继续进行第二次评估、第三次评估……

主动关系到数组的结果应该是

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

【问题讨论】:

  • 你是什么意思“所有的第一次评估”? Client 上的 has_many 关联没有排序,因此没有“第一”,除非您是指具有最低 id 的评估?另外,你能解释一下为什么你想这样做吗?

标签: ruby-on-rails arrays ruby activerecord


【解决方案1】:

您应该使用 includes 并享受 mapzip 和 splat 运算符

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

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    相关资源
    最近更新 更多