STERFIELD
開発ナレッジ2016.07.20

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

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

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

のような形式です。

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

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

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

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

のような形になります。

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

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

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

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

WRITER

スターフィールド編集部

この著者の記事を見る

CONTACT

記事の内容について
相談したい方へ

実際の進め方は、状況を伺ってからご提案します。

2営業日以内にご返信します
資料ダウンロード無料相談に申し込む