概要
Railsでリクエストのバリデーションを行う場合、Rails基礎 ストロングパラメータとバリデーションの記事にある通り、ApplicationRecordの機能を使用する方法などが挙げられます。もちろん、この方法でも全然良いのですが、ApplicationRecordのモデルに通す前に、controllerでバリデーションしたい時もあるなと感じました。
何かないかなと調べてみた結果、rails_param
というライブラリが良さげだったので、今回少し紹介します。
機能など
nicolasblanco/rails_paramに、ライブラリのReadmeがあります。パラメータの、型指定や、必須チェック、最小値・最大値など基本的なチェックは出来そうです。また、項目毎にエラーのメッセージもカスタムで設定できます。
実装サンプル
以下はAPIで、文字列の必須・ブランクチェックを、controllerに実装したサンプルです。
必須チェックでエラーの場合は、Parameter sample_word is required
のようなメッセージをデフォルトで返してくれます。
class SampleController < ApplicationController
def validate_sample
# バリデーションの設定
param! :sample_word, String, required: true, blank: false
puts(params[:sample_word])
render status: :ok
# バリデーションNGの場合
rescue InvalidParameterError => e
render status: :bad_request, json: { message: e }
rescue StandardError => e
render status: :internal_server_error, json: { message: e }
end
end