【Rails】代表的なモデルバリデーション

Ruby on Railsアイキャッチ画像

Railsの代表的なモデルバリデーションをまとめました。

空でないことを確認する

validates :title, presence: true

文字数上限を指定する

validates :title, length: { maximum: 255 }

空であることを許容する

validates :title, length: { maximum: 255 }, allow_blank: true

ただし、allow_blank: trueのみで使うと、

「You need to supply at least one validation」のエラーとなる。

数値(少数含む)のみ許可する

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

コメント