获取has_many关系的最新记录

时间:2014-01-17 13:53:45

标签: ruby-on-rails postgresql

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

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

我试过

Page.select('DISTINCT company_id')

这给了我所有公司的1页。但这不是最新的(created_at ASC)

所以我试过

Page.select('DISTINCT company_id').order('created_at ASC')

,它在创建时产生的错误不在select中。但如果我添加它,我会返回所有记录。

所以我试过

Page.group('company_id').select('company_id').order('created_at ASC')

但这会产生错误,created_at应该在group by或aggregator函数中。

将created_at添加到组中,会产生不需要的结果(同一公司的多个页面)

任何帮助?

编辑:

我喜欢它是一个范围,我需要稍后链接范围。

2 个答案:

答案 0 :(得分:2)

您可以使用pluckuniq

Page.order('created_at ASC').pluck(:company_id).uniq

你可以尝试这个来获得ActiveRecord::Relation

Page.select('max(id) as id, company_id').group(:company_id)

我会使用id来确定网页的“最近性”,而不是created_at。页面越近id越高。您只需使用上面的代码,每id获得最高的company_id页面。

答案 1 :(得分:-4)

按created_at(降序)排序并限制1。