ある条件の時だけモデルの検証をしたい
Rails4
ある条件の時だけモデルの検証をしたい時といえば、
ユーザ情報更新する入力画面でパスワードの検証は毎回したくない。
でもパスワードの変更がある時だけパスワード系項目の検証をしたい。とかそういう時だと思う。
update(create)の時だけ検証する
onオプションを使う
model Cat validates :wight, presence: true, on: :update end
上のようにonオプションにupdateシンボルを渡すことでupdateの時だけこの検証が有効になる。
同様にcreateシンボルを渡すとcreateの時だけ有効。舐められたら無効。
入力項目が表示中の時だけ検証する
ifオプションを使う
model Cat validates :owner, presence: true, if: :owner end
ifオプションに与えている項目名が、入力フォームに存在している時にこの検証が有効になる。
入力値が入っている時はもちろん、空欄でも検証が有効になる。