Ruby on rails 合并两个活动记录结果

Ruby on rails 合并两个活动记录结果,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有个小问题 基本上,我希望从一个表中获得一个项目列表,我有一个按日期排序的模型,但是日期在最后一个小时(DateTime.now-30.minutes..DateTime.now+30.minutes)的项目应该出现在结果的顶部 我需要能够在结果上使用where和其他活动记录方法,因此+是不可能的 目前,我得到两个结果:一个是所有记录,一个是时间范围内的记录,然后使用merge,但这会清除第一个数组 我如何做到这一点?尝试以下方法: ORDER BY CASE created_at WHE

我有个小问题

基本上,我希望从一个表中获得一个项目列表,我有一个按日期排序的模型,但是日期在最后一个小时(
DateTime.now-30.minutes..DateTime.now+30.minutes
)的项目应该出现在结果的顶部

我需要能够在结果上使用
where
和其他活动记录方法,因此
+
是不可能的

目前,我得到两个结果:一个是所有记录,一个是时间范围内的记录,然后使用
merge
,但这会清除第一个数组


我如何做到这一点?

尝试以下方法:

ORDER BY 
CASE created_at 
WHEN > 1.hour.ago THEN 1
ELSE 2, created_at
order("CASE WHEN created_at>'#{1.hour.ago.to_date}' THEN 1 ELSE 2 END, created_at")
对于ActiveRecord范围,它将是以下内容:

ORDER BY 
CASE created_at 
WHEN > 1.hour.ago THEN 1
ELSE 2, created_at
order("CASE WHEN created_at>'#{1.hour.ago.to_date}' THEN 1 ELSE 2 END, created_at")
因此,您可以使用一个查询而不是两个查询。你不需要合并


如果你展示你的模型,我可以给你更详细的例子,你在找这个吗

@latest = Model1.where...
@all = Model1.all

@merged = @latest | @all

关于
型号订单(“日期列描述”)


有几种方法可以实现这一点。通常为简单查询定义一个查找器方法,为更复杂的查询定义一个查找器方法。

在SQL中,您将使用一个
联合来合并两个查询。Rails不支持开箱即用的联合,但中的代码应该可以做到这一点。我试过一次,效果很好,但不确定是否适合您的需要。

您能举个例子吗?您能给出一些您自己的代码和所需的输出吗?