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不支持开箱即用的联合,但中的代码应该可以做到这一点。我试过一次,效果很好,但不确定是否适合您的需要。您能举个例子吗?您能给出一些您自己的代码和所需的输出吗?