我的控制器中有以下查询。有什么方法可以将它们合并成一个吗?
@record_videos = RecordVideo.where("recommand = ?",true).limit(8)
@musics=Music.limit(13)
@new_topics=Topic.limit(5).order("created_at desc")
答案 0 :(得分:0)
不,您无法组合返回不同类对象的多个查询。好吧,理论上,如果您编写自己的查询SQL并使用了一些UNION
,那么可以,但Rails可能不知道如何处理结果数据。我不能随便想到一个用例,这会是一个好主意。
现在,您可以在Ruby代码中轻松地将查询结果组合在一起 - 例如,如果您想要将它们全部排序在一起,您可以这样做:
@all_items = [@record_videos.all, @musics.all, @new_topics.all].flatten.sort_by{ |thing| thing.created_at}