rails 3合并来自不同表的多个查询

时间:2013-08-01 12:55:48

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

我的控制器中有以下查询。有什么方法可以将它们合并成一个吗?

@record_videos = RecordVideo.where("recommand = ?",true).limit(8)
@musics=Music.limit(13)
@new_topics=Topic.limit(5).order("created_at desc")

1 个答案:

答案 0 :(得分:0)

不,您无法组合返回不同类对象的多个查询。好吧,理论上,如果您编写自己的查询SQL并使用了一些UNION,那么可以,但Rails可能不知道如何处理结果数据。我不能随便想到一个用例,这会是一个好主意。

现在,您可以在Ruby代码中轻松地将查询结果组合在一起 - 例如,如果您想要将它们全部排序在一起,您可以这样做:

@all_items = [@record_videos.all, @musics.all, @new_topics.all].flatten.sort_by{ |thing|   thing.created_at}