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,当我测试你的查询时,数据库只被查询了一次。