ActiveRecord 在不加载的情况下获取最大值
ActiveRecord Get Max Value Without Loading
我需要获取具有特定值的最后一条记录,但不加载它。
我必须做类似的事情:
Thing.where(cool: true).where(created_at: Thing.where(cool: true).maximum(:created_at))
以上是一种方法,但它会进行第二次查询以首先获取最大值。我想在一个查询中完成所有操作并获得 SQL 相当于 something = max(etc).
就在有人提到它之前:.last 不起作用,因为它 returns 是对象而不是关系。
换句话说,我需要做 .last 但返回的是关系而不是对象。
试试这个方法:
Thing.where("cool=1 AND created_at=(SELECT MAX(created_at) FROM things WHERE cool=1)")
关于Rails7,当我测试你的查询时,数据库只被查询了一次。
我需要获取具有特定值的最后一条记录,但不加载它。
我必须做类似的事情:
Thing.where(cool: true).where(created_at: Thing.where(cool: true).maximum(:created_at))
以上是一种方法,但它会进行第二次查询以首先获取最大值。我想在一个查询中完成所有操作并获得 SQL 相当于 something = max(etc).
就在有人提到它之前:.last 不起作用,因为它 returns 是对象而不是关系。
换句话说,我需要做 .last 但返回的是关系而不是对象。
试试这个方法:
Thing.where("cool=1 AND created_at=(SELECT MAX(created_at) FROM things WHERE cool=1)")
关于Rails7,当我测试你的查询时,数据库只被查询了一次。