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

时间:2011-07-09 07:31:33

标签: ruby-on-rails ruby-on-rails-3 activerecord

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

例如:

假设两个模型,评论&像belongs_to用户一样

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

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

谢谢!

2 个答案:

答案 0 :(得分:23)

我认为应该如此简单:

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

答案 1 :(得分:0)

如何(未经测试):

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

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