下面两个查询都可以正常工作
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)
有人可以帮我解决这个活动记录查询
答案 0 :(得分:1)
那是因为您正试图调用maximum
和minimum
,就像它们是帮助程序或实例方法一样。您必须在ActiveRecord
对象的实例上调用它们。就您而言,我猜测您的模型文件顶部有class Event < ActiveRecord::Base
。
即使您更改代码以使用ActiveRecord
方法,您在(:visit_id).(maximum
上的Ruby代码仍然格式错误。因此,如果执行计算并获得日期,则代码将如下所示:
Event.joins(:visit).where(:page_id => 3).group(:visit_id).(SomeTimeStamp)
,这将引发其他错误。
您必须以任何一种方式对查询进行重做,但是要注意的重要一点是,您不能调用minimum
或maximum
作为辅助方法。