查找has_many关联数组大小等于设置数的所有实例

时间:2017-12-15 08:05:51

标签: ruby-on-rails activerecord

我希望能够做到这样的事情。其中boat.classifications通常会返回一组相关的分类。

Boat.where(classifications.size == 3)

我可以这样做,但我希望能够在其上调用.pluck,以下代码将不允许这样做。

Boat.all.select do |boat|
    boat.classifications.length == 3
end

1 个答案:

答案 0 :(得分:2)

使用GROUP + HAVING

count = 3
Boat
  .joins(:classifications)
  .group(:id)
  .having('count(boats.id) = ?', count)

你可以用pluck或任何你需要的东西链接它。