Serviceクラスの実行結果をServiceResponseクラスで返す

2021.04.21 Ruby on Rails

serviceクラスの実行結果を今までは適当にしていたのを、GitLabのServiceResponseクラスを参考に統一する方法をまとめます。

はじめに

serviceクラスの実行結果を今までは結構適当にしていました。例えば、更新した件数を返したり、成功したかどうかをtrue,falseで返したり、まちまちでした。GitLabではServiceResponseというクラスを作ってそれを使って実行結果のレスポンスを返していて、とても良いと思ったのでまとめます。

中身

GitLabでは success(message, payload, http_status) と error(message, payload, http_status) のクラスメソッドを持ち、attr_reader で status, message, http_status, payload を読み取り、success? / error? で判定できる形になっています。

使い方

成功した場合は ServiceResponse.success(message: 'success!') を、失敗した場合は ServiceResponse.error(message: 'failed') を service の戻り値に設定します。controller側では result.success? と result.error? で分岐し、redirect_to や render でメッセージを渡せます。

システム開発に興味をお持ちの方は、お気軽にご相談ください。初回のご相談は無料です。

相談する

ブログ一覧へ