STERFIELD

状況によってvalidationを変える(Ruby on Rails)

状況によってvalidationを変える(Ruby on Rails)

Railsのアプリケーションでバリデーションを行うときは、model内に定義します。
例えば、必須入力であれば、

一意性を担保するものであれば、

のような形式です。

しかし、特定の状況ではバリデーションを効かせたいけど、それ以外の状況ではバリデーションを効かせたくないという状況が存在します。
その場合は、いくつか方法が存在するのですが、今日は2つ紹介致します。

1. on, contextで指定をしていする

特定の状況かだけバリデーションを効かせるというときに使用します。
方法は簡単で、上記にて記したバリーデーション記法の末尾に、どういう状況で効かせるかonで指定します。
例えば、その特定の状況をuserとして定義するならば下記のようになります。

そして、上記バリデーションを効かせるには、
Railsにて保存する際に、contextというオプションで指定します。
例えば、userという特定のオプションをもったバリデーションを効かせたい場合であれば、

のような形になります。

なども同様に使用できます。

2. あらゆるバリデーションを無視する

model内にバリデーションを指定していた場合でも、そのバリデーションを無視して保存させたい場合が存在しますが、
その場合は、

のような形で保存させることが可能です。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい