gpt4 book ai didi

ruby-on-rails - 合并两个 ActiveRecord 结果并按共享连接表属性排序

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:15 24 4
gpt4 key购买 nike

我有一个 Convo 表和一个 GroupMeeting 表,它们都与 Msg 表相关联。

我想找到 current_user 有 convos 或 group_meetings 的所有实例,将两者结合起来,然后按照最后一个 msg.created_at 的顺序一起显示给用户

这里我定义了两者:

@convos = Convo.includes(:msgs).where("sender_id = ? OR recipient_id = ?", current_user, current_user).where.not(:msgs => { :id => nil }).merge(Msg.order(created_at: :desc))
@group_meetings = current_user.group_meetings.includes(:msgs).where.not(:msgs => { :id => nil }).merge(Msg.order(created_at: :desc))

然后将它们组合在一起:

  @convos = @convos + @group_meetings

我想不通的是现在如何按 msg.created_at 对它们进行排序

我尝试了以下方法:

 @convos = (@convos + @group_meetings).sort_by(&:"#{msg.created_at}")
@convos.order('msg.created_at DESC')

不过这些似乎都是服务器端排序。创建数组后,如何根据连接表对这些进行排序?

如果我需要提供任何其他详细信息,请告诉我。谢谢!!

最佳答案

您可以尝试以下方法:

(@convos + @group_meetings).sort_by { |item| item.msgs.minimum(:created_at) }

关于ruby-on-rails - 合并两个 ActiveRecord 结果并按共享连接表属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47210353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com