#はじめに
今のアプリケーション作成で使ったバリデーションについて、まとめておく。
##共通のバリデーションをまとめる
###with_options
よく使うバリデーションを例に
model
validates :user, presence: true
validates :item, presence: true
validates :price, presence: true
validates :email, presence: true
なんか同じことばかり繰り返していて、長くなり、可読性が…
そんなときは、with_options
でまとめてバリデーションを設定できる。
model
with_options presence: true do
validates :user
validates :item
validates :price
validates :email
end
##with_optionsをさらに発展的に使って
###さらに個別にバリデーションを追加
model
with_options presence: true do
validates :user, length: { minimum: 6 }
validates :item
validates :price, format: { with: /\A[0-9]+\z/ }
validates :email
end
do~endの中に個別でバリデーションを付けられる。
ちなみに、lengthオプションは、文字数を限定できる。
formatオプションは正規表現についての指定。
###さらにまとめる
model
with_options presence: true do
validates :user
validates :item
with_options uniqueness: true do
validates :price
validates :email
end
end
with_optionsの中にwith_optionsを入れ子にできる。
上の例だと、
presence: true
は:user, :item, :price, :emailに設定され、
さらに、uniqueness: true
は:price, :emailに設定されている。
ちなみに、uniquenessオプションは同じ値を保存できないようにする。(一意性)
##最後に
with_optionsでまとめて記述するのは、中学の数学で出てきた、因数分解の学習あたりの共通項で括る感覚に近い。