Ruby on rails 获取有很多关系的人的最新记录

Ruby on rails 获取有很多关系的人的最新记录,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我试图使用rails activerecord在postgres中创建一个查询,但似乎无法解决它 一家公司有很多页面,我正在努力获取所有公司的最新页面 我试过了 Page.select('DISTINCT company_id') 这给了我所有公司的1页。但这不是ASC最新创建的 所以我试过了 Page.select('DISTINCT company_id').order('created_at ASC') Page.group('company_id').select('company_

我试图使用rails activerecord在postgres中创建一个查询,但似乎无法解决它

一家公司有很多页面,我正在努力获取所有公司的最新页面

我试过了

Page.select('DISTINCT company_id')
这给了我所有公司的1页。但这不是ASC最新创建的

所以我试过了

Page.select('DISTINCT company_id').order('created_at ASC')
Page.group('company_id').select('company_id').order('created_at ASC')
这会给出一个错误,因为在创建时不在选择中。但是如果我加上它,我会得到所有的记录

所以我试过了

Page.select('DISTINCT company_id').order('created_at ASC')
Page.group('company_id').select('company_id').order('created_at ASC')
但这会产生一个错误,即创建的_应位于group by或aggregator函数中

将created_at添加到group by,会产生不需要的结果—同一公司的多个页面

有什么帮助吗

编辑:


我希望它是一个作用域,以后我需要链接作用域。

按降序和限制1创建顺序。

您可以使用和:

您可以尝试此操作以获取ActiveRecord::关系:


我将使用id来确定页面的最近度,而不是在创建时。id越高,页面越近。使用上面的代码,您可以简单地获得每个公司id的最高页面id。

我喜欢创建一个作用域,以便它返回activerecord关系,这样我就可以链接它。基本上我想要例如Page.unique\u for_companys.active或类似的东西好的,我会更新我的答案。您必须在当时创建的_上使用group和聚合函数。@Misha我不确定您的解决方案。因为它将从pages表中提供唯一的公司ID。它不会为我得到的每一个comapnyI提供最新创建的页面:这差不多是对的,但是没有id,我仍然不能用它做任何事情。可能链接某些作用域不起作用,因为缺少id。有可能获取整个AR对象吗?抱歉,这似乎是可能的:只需将id添加到您的选择中即可。