Rails:group by和max,pluck删除select

时间:2018-02-08 14:10:26

标签: ruby-on-rails activemodel

所以,我试图找出帖子的author_ids,其最新帖子收到10-50个喜欢。这就是我想要做的事情:

Post.select('MAX(created_at) as created_at, author_id')
.group(:author_id)
.where('likes > 10')
.where('likes < 50')

它工作得很好,但是当我添加pluck[:author_id]时,它会从select中删除SELECT MAX(。我如何只获得author_ids

2 个答案:

答案 0 :(得分:2)

pluck这样做会删除select中的内容。

另一方面,map可以满足您的需求。

Post.select('MAX(created_at) as created_at, author_id')
 .group(:author_id)
 .where('likes > 10')
 .where('likes < 50')
 .map(&:author_id)

答案 1 :(得分:0)

尝试使用此

Post.where(likes: [10..50]).pluck[:author_id].uniq

这是一个有点不同的方法,因为我更喜欢利用ruby语法而不是直接查询,但它应该可以正常工作