合并两个查询的结果并按created_at排序?

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

例如:

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

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

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

谢谢!

我相信它应该如此简单:

combined_sorted = (User.comments + User.likes).sort{|a,b| a.created_at <=> b.created_at } 

怎么样(未经测试):

 class User < ActiveRecord::Base scope :activities_by_date, :joins(:comments).joins(:likes).order("created_at desc") end 

然后你可以执行@user.activities_by_date并让db完成所有工作