ActiveRecordで子テーブルの要素数を条件としたレコードを取得する

2024年12月11日

これは .ごっ!のアドベントカレンダー の11日目の記事です。

ActiveRecordで子テーブルの要素数を条件としたレコードを取得するときは、SQLを組み立てる要領で havingメソッドを使用します。

https://apidock.com/rails/ActiveRecord/QueryMethods/having

# 親テーブル:Parent
# 子テーブル:Child
# 関連付け:Parent has_many :children

parents_with_one_child = Parent
  .select('parents.*, COUNT(children.id) AS children_count')
  .joins(:children)
  .group('parents.id')
  .having('COUNT(children.id) = 1')
ProfilePicture

Yuta Goto

フリーランスのソフトウェアエンジニアです。現在はReact.jsを使用したWebフロントエンドの開発やRuby on Railsを使用したサーバサイドの開発を行っています。