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中的一个特殊变量,不能用作列名。
我正在使用 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中的一个特殊变量,不能用作列名。