状況によってvalidationを変える(Ruby on Rails)
Railsのアプリケーションでバリデーションを行うときは、model内に定義します。
例えば、必須入力であれば、
1 | validates :name, presence: true |
一意性を担保するものであれば、
1 | validates :name, presence: true |
のような形式です。
しかし、特定の状況ではバリデーションを効かせたいけど、それ以外の状況ではバリデーションを効かせたくないという状況が存在します。
その場合は、いくつか方法が存在するのですが、今日は2つ紹介致します。
1. on, contextで指定をしていする
特定の状況かだけバリデーションを効かせるというときに使用します。
方法は簡単で、上記にて記したバリーデーション記法の末尾に、どういう状況で効かせるかonで指定します。
例えば、その特定の状況をuserとして定義するならば下記のようになります。
1 | validates :name, presence: true, on: user |
そして、上記バリデーションを効かせるには、
Railsにて保存する際に、contextというオプションで指定します。
例えば、userという特定のオプションをもったバリデーションを効かせたい場合であれば、
1 | save(context: :user) |
のような形になります。
1 | invalid(context: :user) |
なども同様に使用できます。
2. あらゆるバリデーションを無視する
model内にバリデーションを指定していた場合でも、そのバリデーションを無視して保存させたい場合が存在しますが、
その場合は、
1 | save(validate: false) |
のような形で保存させることが可能です。
Author Profile
スターフィールド編集部
SHARE