合并两个查询的结果并按created_at排序?[rails 3]

ist*_*tan 17 activerecord ruby-on-rails ruby-on-rails-3

寻找一种利用活动记录从两个模型中获取数据的简单方法,组合数据,然后按created_at对组合输出进行排序.

例如:

假设有两个模型,Comment&Like both belongs_to User

返回@ user的评论和喜欢的组合列表,按日期排序

我知道我可以在SQL中执行此操作,但我真的很喜欢有效的记录解决方案.

谢谢!

Chr*_*tto 23

我相信它应该如此简单:

combined_sorted = (User.comments + User.likes).sort{|a,b| a.created_at <=> b.created_at }
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案有效,但由于您正在将所有记录加载到内存中并要求Ruby进行排序,因此会出现严重的性能(内存)问题.我喜欢使用数据库进行排序的答案. (6认同)