Railsの代表的なモデルバリデーションをまとめました。
目次
空でないことを確認する
validates :title, presence: true
文字数上限を指定する
validates :title, length: { maximum: 255 }
空であることを許容する
validates :title, length: { maximum: 255 }, allow_blank: true
数値(少数含む)のみ許可する
validates :title, numericality: true
数値(少数を許容しない)のみ許可する
validates :title, numericality: { only_integer: true }
特定のフォーマットであることを検証(正規表現)
validates :title, format: { with: 正規表現 }
同じデータが一つ(一意)であることを検証する
validates :title, uniqueness: true
大文字/小文字の区別を無しとする場合
validates :title, uniqueness: { case_sensitive: false }
数値のみであることを検証する
validates :price, numericaliity: { greater_than_or_equal_to: 0 }
価格登録カラムなどで、マイナスの数値が入れられることの無い様に設定できる。
上記の例だと、0円以上のバリデーションがかかっている。
参考記事
【Rails】numericalityを使って属性に数値のみが使われている事を検証する - Qiita
こんばんは!validationのnumericalityヘルパーの備忘録DBに保存されちゃう<%= form_for @post do |f| %> <%= f.label :price %…
独自バリデーション
bookの名前にexerciseが含まれる場合、エラーを表示する。
class Book < ApplicationRecord
省略
validate do |book|
if book.name.include?("exercise")
book.errors[:name] << "I don't like exercise"
end
end
end
コメント