開発で調べたことをまとめました!
概要
ページネーションを実装するためAPI側で、必要な分のレコードを取得して返す。
フロント側からパラメータで、取得レコード数(limit)や、何ページ目(offset)を設定する。
使い方
モデル.limit(最大取得行数).offset(取得開始位置)
例) usersテーブルから1~5件目、最大5件を取得
User.limit(5)
# SELECT * FROM users LIMIT 5
例) usersテーブルから6~10件目、最大5件を取得
User.limit(5).offset(5)
# SELECT * FROM users LIMIT 5 OFFSET 5
例) limit/offsetパラメータがnilの場合、User.allと同じ
User.limit(nil).offset(nil)
# SELECT * FROM users
受け取るパラメータがなかった場合にエラーが出たため、&.(ぼっち演算子)を使う
→nilを返す
limit_params = params[:limit]&.to_i
offset_params = params[:offset]&.to_i
参考