合并两个查询的结果并按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完成所有工作