Rails: group by and max, pluck 删除 select
Rails: group by and max, pluck removes select
所以,我试图找出 author_ids 的 post 人,他们最近的 post 获得了 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
?
试试这个
Post.where(likes: [10..50]).pluck[:author_id].uniq
这是一种有点不同的方法,因为我更喜欢利用 ruby
语法而不是直接查询,但它应该可以正常工作
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)
所以,我试图找出 author_ids 的 post 人,他们最近的 post 获得了 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
?
试试这个
Post.where(likes: [10..50]).pluck[:author_id].uniq
这是一种有点不同的方法,因为我更喜欢利用 ruby
语法而不是直接查询,但它应该可以正常工作
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)