Rails查询每个类型的最后一个

Rails query the last of each type

我正在使用 STI 并有一个 table 小部件,许多其他子类从使用 STI 继承而来。我想要一个查询来获取每个具有 uniq 类型的对象的最后创建。

我有一个我想要的预定义类型数组,所以可以说:

types = ["type1", "type2", "type3"]

所以我的查询类似于:(这不起作用)

Widget.where(type: types).uniq.reverse

我的目标是获取与其中一种类型匹配的每个对象的最后一个。

不是 100% 确定,但这样的事情可能有效(未经测试):

ids = Thing.where(type: types).group(:type).maximum(:id).values
last_per_type = Thing.find(ids)
Thing.select("distinct type")

顺便说一句,type是rails中的一个特殊变量,不能用作列名。