Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Ruby on Rails | Validation | exclusion

概要

exclusion

詳細

ActiveRecordで、validation時にexclusionを利用することで、
除外すべき値を設定することができます。

サンプル

テーブル定義
CREATE TABLE "articles" (
  "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
  "title" varchar(255), 
  "text" text, 
  "created_at" datetime, 
  "updated_at" datetime
);
Validation
class Article < ActiveRecord::Base
  validates :title, presence: true, length: { minimum: 5 },
      exclusion: [{ in: %w(reserved1 reserved2), message: "%{value} is reserved." }]
end
試行

rails console(pry)で試行します。

[1] pry(main)> a = Article.new
=> #<Article id: nil, title: nil, text: nil, created_at: nil, updated_at: nil>
[2] pry(main)> a.title = 'reserved1'
=> "reserved1"
[3] pry(main)> a.valid?
=> false
[4] pry(main)> a.errors.messages
=> {:title=>["reserved1 is reserved."]}
[5] pry(main)> a.title = 'reserved3'
=> "reserved3"
[6] pry(main)> a.valid?
=> true