【问题标题】:Combining two different ActiveRecord collections into one将两个不同的 ActiveRecord 集合合并为一个
【发布时间】:2016-03-18 21:41:05
【问题描述】:

我想创建所有公司活动的可视化时间表。时间线的 HTML 是使用 loop 构建的。

为简单起见,我们假设有两个模型 HireDeal。两个模型都有一个date 属性和一些模型特定的属性。如何将两个模型的 ActiveRecord 结果合并,然后将 order date 的组合哈希合并成一个我可以循环的哈希?

【问题讨论】:

    标签: ruby-on-rails ruby sorting ruby-on-rails-4 activerecord


    【解决方案1】:

    好吧,假设查询HireDeal 模型的结果是一个对象数组(collection),那么您只需使用+ 将它们连接成一个新数组并按datesort_by 对项目进行排序:

    combined = ( Hire.all + Deal.all ).sort_by(&:date)
    

    或使用concat 将一个集合与另一个集合连接:

    combined = Hire.all.concat( Deal.all ).sort_by(&:date)
    

    【讨论】:

    • 感谢您的回答。这个问题是我仍然需要按date 对组合哈希进行排序,以便正确显示时间。有什么建议可以实现吗?
    • 非常感谢
    • 一个简短的问题,如果您愿意的话:您对如何按模型区分记录有什么建议吗?
    • 不是hash,是数组,会按Date排序。您可以遍历数组并询问每个对象的类型:combined.each{|c| c.class.name}
    • @Matthias 在询问后续问题之前,您还应该在 Rails 控制台中尝试代码。这样您就可以更好地了解正在发生的事情。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多