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

时间:2015-07-09 00:13:44

标签: sql ruby-on-rails ruby activerecord rails-activerecord

我正在使用STI并且有一个表Widget,其他一些子类继承自使用STI。我想要一个查询,它使用uniq类型获取每个对象的最后一次创建。

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

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

所以我的查询将是:(这不起作用)

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

我的目标是让每个对象的最后一个匹配其中一个类型..

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

Thing.select("distinct type")

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