【Rails】validationにラムダ式を使う

はいどうも、今回はvalidationにラムダ式を使っているソースを発見しました。こんな使い方ができるんだと思って、調べたことをまとめておきたいと思います。

【Rails】validationにラムダ式を使う

結論

このシチュエーションでは、validationして欲しくないなぁ。とか、この時にだけvalidation走るようにしたいなぁ。とか言うときに使えます!

if文に条件を渡すイメージですね。

ちょっと詳しく

例えば以下のようなコードがあったとします。

コード

validates :password, unless: -> { password.blank? }

これはどう言うことかというと、

パスワードにバリデーションをかけてくださいよ。ただしパスワードが、空じゃない場合です。

と言うことですね。

つまりもしパスワードが空の時は、パスワードのバリデーションは走らないと言うことです。

ラムダも当然Procオブジェクトのひとつですから、Procオブジェクトを渡しても、同じように使えます。

とにかくバリデーションをある特定のシチュエーションの時だけかけたい、と言うことがあれば、ぜひ使ってみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA