この記事について
この記事は SUPER STUDIO Advent Calendar 2023 の9日目の記事になります。
この記事を書こうと思った理由
仕事でRestAPIを使ってGETリクエストする際に、ransackをクエリパラメータで指定して検索条件を指定することがあるのですが、改めて使い方などを整理したいと思い、また、自分の知らなかった機能も最近知る機会が合ったので、改めてまとめてみようと思いました。
そもそもransackとは
ransackをそのまま日本語訳するとあまり印象の良くない翻訳になりますが、簡単に言うとRailsのActiveRecordにおける検索機能を実装するgemになります。
使い方
基本的にはこちらのドキュメント通り指定することで利用できますが、簡単に解説していきます。
# ex) user情報のnameカラムを検索条件に指定する場合(完全一致)
https://hoge.sample.com/api/users?q[name_eq]=hoge
# ex) user情報のnameカラムを検索条件に指定する場合(部分一致)
https://hoge.sample.com/api/users?q[name_cont]=hoge
# ex) user情報のidカラムを検索条件に指定する場合(複数指定)
https://hoge.sample.com/api/users?q[id_in][]=10&q[id_in][]=20
# ex) 日付カラムを範囲指定する場合の一例
https://hoge.sample.com/api/users?q[created_at_gt]=2023/12/01%2000:00:00&q[created_at_lteq]=2023/12/02%2000:00:00
booleanのカラムやtrue,falseで指定するパラメータは下記のように指定します
# ex) 論理削除済みのレコードを含めて検索する場合
https://hoge.sample.com/api/users?q[with_deleted]=1
# ex) activeカラムがtrueのデータを取得する場合
https://hoge.sample.com/api/users?q[active_true]=1
# ex) optionカラムがnullでないデータを取得する場合(presentなども使えます)
https://hoge.sample.com/api/users?q[option_not_null]=1
また、下記のようにソート条件を指定することもできます。
# created_atで昇順でソートする場合
https://hoge.sample.com/api/users?q[s]=created_at%20asc
# 第一ソートにupdated_atの降順、第二ソートにpositionの昇順でソートする場合
https://hoge.sample.com/api/users?q[s]=updated_at%20desc&q[s]=position%20asc
まとめ
全てではないですが、ransackをクエリパラメータで指定して検索するやり方をまとめてみました。少しでも誰かの参考になれば幸いです。