寻找一种简单的方法,利用活动记录从两个模型中获取数据,合并数据,然后通过created_at对合并输出进行排序。结合两个查询的结果并通过created_at排序? [rails 3]
例如:
假设两种型号,评论&都喜欢belongs_to的用户
返回按日期排序的@用户的意见和喜好组合列表
我知道我可以在SQL做到这一点但我真的很喜欢积极的唱片解决方案。
谢谢!
寻找一种简单的方法,利用活动记录从两个模型中获取数据,合并数据,然后通过created_at对合并输出进行排序。结合两个查询的结果并通过created_at排序? [rails 3]
例如:
假设两种型号,评论&都喜欢belongs_to的用户
返回按日期排序的@用户的意见和喜好组合列表
我知道我可以在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
,让数据库完成所有的工作
不适用于我。 –
另外,您正在通过用户实例调用作用域。它应该是:'User.activities_by_date' –
这使我更接近,将两个查询结果返回到单个数组中,但它不会基于created_at将它们混合。它返回由created_at排序的评论,之后是由created_at排序的喜欢评论。我需要将所有记录混合在一起,以便获得按时间顺序排列的评论/喜欢活动 – istan
此编辑内容如何? –
宾果。万分感谢! – istan