課題
ある項目に対して数値チェックと存在チェックを行いたい。数値チェックがNGな時点で存在チェックを満たさないのは自明なので これをスキップしたい。どうするのが良いか。
対応
バリデーションがNGだった項目は errorsにaddされるので、その存在チェックをする
validats :code, length: { is: 3 } validats :code, numericality:true unless errors.include?(:code)?
ここで errors[:code].blank?
でも同じようなことができるのだが、errors内に:code
が作られてしまっていた。
active_model/errors.rb
には include?
メソッドが用意されているのでそちらを使うのが良さそう。