Rails Active Record同时使用最大值和最小值

时间:2018-07-16 08:35:03

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

下面两个查询都可以正常工作

Event.joins(:visit).where(:page_id => 3).group(:visit_id).minimum('events.time')

Event.joins(:visit).where(:page_id => 3).group(:visit_id).maximum('events.time')

我想找到差异maximum('events.time') - minimum('events.time')并按visit id分组

为此,我在下面的查询中编写

Event.joins(:visit).where(:page_id => 3).group(:visit_id).(maximum('events.time') - minimum('events.time'))

我遇到了错误,(undefined method maximum for main:Object)

有人可以帮我解决这个活动记录查询

1 个答案:

答案 0 :(得分:1)

那是因为您正试图调用maximumminimum,就像它们是帮助程序或实例方法一样。您必须在ActiveRecord对象的实例上调用它们。就您而言,我猜测您的模型文件顶部有class Event < ActiveRecord::Base

即使您更改代码以使用ActiveRecord方法,您在(:visit_id).(maximum上的Ruby代码仍然格式错误。因此,如果执行计算并获得日期,则代码将如下所示: Event.joins(:visit).where(:page_id => 3).group(:visit_id).(SomeTimeStamp),这将引发其他错误。

您必须以任何一种方式对查询进行重做,但是要注意的重要一点是,您不能调用minimummaximum作为辅助方法。