はいどうも、今回はvalidationにラムダ式を使っているソースを発見しました。こんな使い方ができるんだと思って、調べたことをまとめておきたいと思います。
【Rails】validationにラムダ式を使う
結論
このシチュエーションでは、validationして欲しくないなぁ。とか、この時にだけvalidation走るようにしたいなぁ。とか言うときに使えます!
if文に条件を渡すイメージですね。
ちょっと詳しく
例えば以下のようなコードがあったとします。
コード
validates :password, unless: -> { password.blank? }
これはどう言うことかというと、
パスワードにバリデーションをかけてくださいよ。ただしパスワードが、空じゃない場合です。
と言うことですね。
つまりもしパスワードが空の時は、パスワードのバリデーションは走らないと言うことです。
ラムダも当然Procオブジェクトのひとつですから、Procオブジェクトを渡しても、同じように使えます。
とにかくバリデーションをある特定のシチュエーションの時だけかけたい、と言うことがあれば、ぜひ使ってみてください。