目次
- 検証の流れ
- 属性の値が一意であることを検証(validates_uniqueness_of)
- 関連付けられているオブジェクトを検証(validates_associated)
- 実行前にリクエストの検証(verify)
- チェックボックスのチェックが入っているか(acceptance)
- 2つのフィールドが等しいか(confirmation)
- 値が配列・範囲に含まれていないか(exclusion)
- 値が配列・範囲に含まれているか(inclusion)
- 正規表現パターンに一致しているか(format)
- 文字列の長さをチェック(length)
- 数値の大小、型をチェック(numericality)
- 値が空でないか(presence)
- 値が一意であるか(uniqueness)
- 値が空でないか(validates_presence_of)
- モデルの検証を定義(validate)
- 空白であることを検証(validates_absence_of)
- チェックボックスにチェックが入っているか検証(validates_acceptance_of)
- 2つのフィールドが等しいか検証(validates_confirmation_of)
- 値が配列・範囲に含まれていないか検証(validates_exclusion_of)
- 正規表現パターンに一致しているか検証(validates_format_of)
- 値が配列・範囲に含まれているか検証(validates_inclusion_of)
- 文字列の長さをチェック(validates_length_of)
- 数値の大小、型をチェック(validates_numericality_of)
検証(validation)
検証の流れ
- モデルに検証する条件を定義
- 保存する前に、検証
- 検証の結果、エラーが無ければ保存。エラーがあれば、エラーメッセージを表示
属性の値が一意であることを検証(validates_uniqueness_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
属性の値が一意であることを検証
使い方
validates_uniqueness_of(検証するフィールド名 [, オプション])
オプション
| オプション | 説明 | デフォルト |
|---|---|---|
| :message | 検証が失敗したときに表示するメッセージ | |
| :scope | 一意性制約を決めるために使用する他のカラム | |
| :conditions | 検索条件を指定 | |
| :case_sensitive | 大文字と小文字を区別するか | true |
| :allow_nil | trueならば、nilの検証はスキップ | false |
| :allow_blank | trueならば、空の検証はスキップ | false |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 |
例
class User < ActiveRecord::Base
validates_uniqueness_of :user_name, :scope => :account_id
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.beta1/lib/active_record/validations/uniqueness.rb, line 216
def validates_uniqueness_of(*attr_names)
validates_with UniquenessValidator, _merge_attributes(attr_names)
endソースコード検索
関連付けられているオブジェクトを検証(validates_associated)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
関連付けられているオブジェクトを検証
使い方
validates_associated(検証対象 [, ...])
オプション
| オプション | 説明 |
|---|---|
| :message | 検証が失敗したときに表示するメッセージ |
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
例
class Book < ActiveRecord::Base
has_many :pages
belongs_to :library
validates_associated :pages, :library
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.beta1/lib/active_record/validations/associated.rb, line 44
def validates_associated(*attr_names)
validates_with AssociatedValidator, _merge_attributes(attr_names)
endソースコード検索
実行前にリクエストの検証(verify)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
アクションの実行前にチェックを行う
使い方
verify オプション
オプション
| オプション | 説明 |
|---|---|
| :params | パラメータがあるかどうか |
| :session | セッションにキーがあるかどうか |
| :flash | フラッシュの中に指摘したキーのデータあるかどうか |
| :method | HTTPのメソッドが指定したものかどうか |
| :xhr | アクションがAjaxから呼ばれたかどうか |
| :add_flash | フラッシュにデータを追加 |
| :add_headers | HTTPのヘッダに「カラム名:値」を追加 |
| :redirect_to | 別のアクションにリダイレクト |
| :render | 別のアクションのテンプレートでレンダリング |
| :only | 適用するアクション |
| :except | 適応しないアクション |
例
セッションにuser_idがない場合は、indexにリダイレクト
verify :session => "user_id", :redirect_to { :action => "index" }
POSTでアクセスしてない場合は、indexにリダイレクト
verify :method => :post, :redirect_to { :action => "index" }
create,update,deleteアクション以外は、indexにリダイレクト
verify :only => [:create, :update, :delete], :redirect_to { :action => "index" }
ソースコード
ソースコードを見る
# File activesupport/lib/active_support/message_verifier.rb, line 41
def verify(signed_message)
raise InvalidSignature if signed_message.blank?
data, digest = signed_message.split("--")
if data.present? && digest.present? && secure_compare(digest, generate_digest(data))
@serializer.load(::Base64.decode64(data))
else
raise InvalidSignature
end
endソースコード検索
チェックボックスのチェックが入っているか(acceptance)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
チェックボックスのチェックが入っているか
使い方
validates(検証するフィールド名, :acceptance => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
validates :terms, acceptance: true
ソースコード検索
2つのフィールドが等しいか(confirmation)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
2つのフィールドが等しいか
使い方
validates(検証するフィールド名, :confirmation => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
validates :password, confirmation: true
ソースコード検索
値が配列・範囲に含まれていないか(exclusion)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
値が配列に含まれていないか
使い方
validates(検証するフィールド名, :exclusion => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
validates :username, exclusion: { in: %w(admin superuser) }
ソースコード検索
値が配列・範囲に含まれているか(inclusion)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
値が配列・範囲に含まれているか
使い方
validates(検証するフィールド名, :inclusion => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
validates :age, inclusion: { in: 0..9 }
ソースコード検索
正規表現パターンに一致しているか(format)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
正規表現パターンに一致しているか
使い方
validates(検証するフィールド名, :format => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, on: :create }
ソースコード検索
文字列の長さをチェック(length)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
文字列の長さをチェック
使い方
validates(検証するフィールド名, :length => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :minimun | 最小の文字列長 |
| :maximun | 最大の文字列長 |
| :in | 文字列長の範囲(range型) |
| :tokenizer | 文字列の分割方法 |
| :is | 文字列長 |
| :too_long | :maximunパラメータに違反した時のエラーメッセージ |
| :too_short | :minimunパラメータに違反した時のエラーメッセージ |
| :wrong_length | :isパラメータに違反した時のエラーメッセージ |
例
validates :first_name, length: { maximum: 30 }
ソースコード検索
数値の大小、型をチェック(numericality)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
チェックボックスのチェックが入っているか
使い方
validates(検証するフィールド名, :numericality => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :only_integer | 整数であるかを検証 |
| :greater_than | 指定値より大きいか |
| :greater_than_or_equal_to | 指定値以上か |
| :equal_to | 指定値と等しいか |
| :less_than | 指定値未満か |
| :less_than_or_equal_to | 指定値以下か |
| :odd | 奇数か |
| :even | 偶数か |
例
validates :age, numericality: true
ソースコード検索
値が空でないか(presence)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
チェックボックスのチェックが入っているか
使い方
validates(検証するフィールド名, :presence => 検証パラメータ)
オプション
| オプション | 説明 |
|---|---|
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
validates :username, presence: true
ソースコード検索
値が一意であるか(uniqueness)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
値が一意であるか
使い方
validates(検証するフィールド名, :uniqueness => 検証パラメータ)
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :scope | 一意性制約を決めるために使用する他のカラム | |
| :case_sensitive | 大文字と小文字を区別するか | true |
例
validates :username, uniqueness: true
ソースコード検索
値が空でないか(validates_presence_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
値が空でないかを検証
使い方
validates_presence_of(検証対象 [, ...])
オプション
| オプション | 説明 |
|---|---|
| :message | 検証が失敗したときに表示するメッセージ |
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.beta1/lib/active_record/validations/presence.rb, line 60
def validates_presence_of(*attr_names)
validates_with PresenceValidator, _merge_attributes(attr_names)
endソースコード検索
モデルの検証を定義(validate)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
モデルの検証を定義する
使い方
validate 検証メソッド名 [, ...]
オプション
| オプション | 説明 | デフォルト |
|---|---|---|
| :on | 保存されるタイミングを設定 | |
| :allow_nil | trueならば、nilの検証はスキップ | false |
| :allow_blank | trueならば、空の検証はスキップ | false |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 |
例
class Comment
include ActiveModel::Validations
validate :must_be_friends
def must_be_friends
errors.add(:base, 'Must be friends to leave a comment') unless commenter.friend_of?(commentee)
end
end
class Comment
include ActiveModel::Validations
validate do |comment|
comment.must_be_friends
end
def must_be_friends
errors.add(:base, 'Must be friends to leave a comment') unless commenter.friend_of?(commentee)
end
end
ソースコード検索
空白であることを検証(validates_absence_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
空白であることを検証する
使い方
validates_absence_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :message | 検証が失敗したときに表示するメッセージ | must be accepted |
例
class Person < ActiveRecord::Base
validates_acceptance_of :terms_of_service
validates_acceptance_of :eula, message: 'must be abided'
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/absence.rb, line 26
def validates_absence_of(*attr_names)
validates_with AbsenceValidator, _merge_attributes(attr_names)
endソースコード検索
チェックボックスにチェックが入っているか検証(validates_acceptance_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
チェックボックスにチェックが入っているか検証する
使い方
validates_acceptance_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :message | 検証が失敗したときに表示するメッセージ | must be accepted |
| :allow_nil | trueならば、nilの検証はスキップ | false |
| :accept | フォームで受付可能なMIMEタイプ | 1 |
| :on | 保存されるタイミングを設定 | |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 | |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
class Person < ActiveRecord::Base
validates_acceptance_of :terms_of_service
validates_acceptance_of :eula, message: 'must be abided'
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/acceptance.rb, line 50
def validates_acceptance_of(*attr_names)
validates_with AcceptanceValidator, _merge_attributes(attr_names)
endソースコード検索
2つのフィールドが等しいか検証(validates_confirmation_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
2つのフィールドが等しいか検証する
使い方
validates_confirmation_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :message | 検証が失敗したときに表示するメッセージ | must be accepted |
| :on | 保存されるタイミングを設定 | |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 | |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
Model:
class Person < ActiveRecord::Base
validates_confirmation_of :user_name, :password
validates_confirmation_of :email_address,
message: 'should match confirmation'
end
View:
<%= password_field "person", "password" %>
<%= password_field "person", "password_confirmation" %>
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/confirmation.rb, line 52
def validates_confirmation_of(*attr_names)
validates_with ConfirmationValidator, _merge_attributes(attr_names)
endソースコード検索
値が配列・範囲に含まれていないか検証(validates_exclusion_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
値が配列・範囲に含まれていないか検証する
使い方
validates_exclusion_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :in | 比較対象の配列、または範囲オブジェクト | |
| :within | 比較対象の配列、または範囲オブジェクトの範囲 | |
| :message | 検証が失敗したときに表示するメッセージ | must be accepted |
| :allow_nil | trueならば、nilの検証はスキップ | false |
| :allow_blank | trueならば、空の検証はスキップ | false |
| :on | 保存されるタイミングを設定 | |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 | |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
class Person < ActiveRecord::Base
validates_exclusion_of :username, in: %w( admin superuser ), message: "You don't belong here"
validates_exclusion_of :age, in: 30..60, message: 'This site is only for under 30 and over 60'
validates_exclusion_of :format, in: %w( mov avi ), message: "extension %{value} is not allowed"
validates_exclusion_of :password, in: ->(person) { [person.username, person.first_name] },
message: 'should not be the same as your username or first name'
validates_exclusion_of :karma, in: :reserved_karmas
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/exclusion.rb, line 45
def validates_exclusion_of(*attr_names)
validates_with ExclusionValidator, _merge_attributes(attr_names)
endソースコード検索
正規表現パターンに一致しているか検証(validates_format_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
正規表現パターンに一致しているか検証する
使い方
validates_format_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :message | 検証が失敗したときに表示するメッセージ | must be accepted |
| :allow_nil | trueならば、nilの検証はスキップ | false |
| :allow_blank | trueならば、空の検証はスキップ | false |
| :with | 正規表現パターン | |
| :without | 正規表現パターン | |
| :multiline | 行の先頭または、末尾 | |
| :on | 保存されるタイミングを設定 | |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 | |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
class Person < ActiveRecord::Base
validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/, on: :create
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/format.rb, line 110
def validates_format_of(*attr_names)
validates_with FormatValidator, _merge_attributes(attr_names)
endソースコード検索
値が配列・範囲に含まれているか検証(validates_inclusion_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
値が配列・範囲に含まれているか検証する
使い方
validates_inclusion_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 | 初期値 |
|---|---|---|
| :in | 文字列長の範囲(range型) | |
| :within | 比較対象の配列、または範囲オブジェクトの範囲 | |
| :message | 検証が失敗したときに表示するメッセージ | must be accepted |
| :allow_nil | trueならば、nilの検証はスキップ | false |
| :allow_blank | trueならば、空の検証はスキップ | false |
| :on | 保存されるタイミングを設定 | |
| :if | 検証する条件を指定 | |
| :unless | 検証しない条件を指定 | |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
class Person < ActiveRecord::Base
validates_inclusion_of :gender, in: %w( m f )
validates_inclusion_of :age, in: 0..99
validates_inclusion_of :format, in: %w( jpg gif png ), message: "extension %{value} is not included in the list"
validates_inclusion_of :states, in: ->(person) { STATES[person.country] }
validates_inclusion_of :karma, in: :available_karmas
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/inclusion.rb, line 44
def validates_inclusion_of(*attr_names)
validates_with InclusionValidator, _merge_attributes(attr_names)
endソースコード検索
文字列の長さをチェック(validates_length_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
文字列の長さをチェックする
使い方
validates_length_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 |
|---|---|
| :minimum | 最小の文字列長 |
| :maximum | 最大の文字列長 |
| :is | 長さが同じこと |
| :within | 文字列長の範囲 |
| :in | 文字列長の範囲 |
| :allow_nil | trueならば、nilの検証はスキップ |
| :allow_blank | trueならば、空の検証はスキップ |
| :too_long | :maximumに違反したときの、エラーメッセージ |
| :too_short | :minimumに違反したときの、エラーメッセージ |
| :wrong_length | :isに違反したときの、エラーメッセージ |
| :message | 検証が失敗したときに表示するメッセージ |
| :tokenizer | 文字列の分割方法 |
例
class Person < ActiveRecord::Base
validates_length_of :first_name, maximum: 30
validates_length_of :last_name, maximum: 30, message: "less than 30 if you don't mind"
validates_length_of :fax, in: 7..32, allow_nil: true
validates_length_of :phone, in: 7..32, allow_blank: true
validates_length_of :user_name, within: 6..20, too_long: 'pick a shorter name', too_short: 'pick a longer name'
validates_length_of :zip_code, minimum: 5, too_short: 'please enter at least 5 characters'
validates_length_of :smurf_leader, is: 4, message: "papa is spelled with 4 characters... don't play me."
validates_length_of :essay, minimum: 100, too_short: 'Your essay must be at least 100 words.',
tokenizer: ->(str) { str.scan(/\w+/) }
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/length.rb, line 119
def validates_length_of(*attr_names)
validates_with LengthValidator, _merge_attributes(attr_names)
endソースコード検索
数値の大小、型をチェック(validates_numericality_of)
適応バージョン
- 1.0.0
- 1.1.0
- 1.1.1
- 1.1.6
- 1.2.0
- 1.2.6
- 2.0.0
- 2.0.1
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.2
- 2.3.8
- 3.0.0
- 3.0.5
- 3.0.7
- 3.0.9
- 3.1.0
- 3.2.3
- 3.2.8
- 3.2.13
- 4.0.0
説明
数値の大小、型をチェックする
使い方
validates_numericality_of(検証するフィールド名 [, ...])
オプション
| オプション | 説明 |
|---|---|
| :message | 検証が失敗したときに表示するメッセージ |
| :only_integer | 整数であるかを検証 |
| :allow_nil | trueならば、nilの検証はスキップ |
| :greater_than | 指定値より大きいか |
| :greater_than_or_equal_to | 指定値以上か |
| :equal_to | 指定値と等しいか |
| :less_than | 指定値未満か |
| :less_than_or_equal_to | 指定値以下か |
| :odd | 奇数か |
| :even | 偶数か |
| :on | 保存されるタイミングを設定 |
| :if | 検証する条件を指定 |
| :unless | 検証しない条件を指定 |
| :strict | 保護された属性を更新するときにActiveModel::MassAssignmentSecurity::Error |
例
class Person < ActiveRecord::Base
validates_numericality_of :value, on: :create
end
ソースコード
ソースコードを見る
# File /usr/local/lib/ruby/gems/2.0.0/gems/activemodel-4.0.0.beta1/lib/active_model/validations/numericality.rb, line 131
def validates_numericality_of(*attr_names)
validates_with NumericalityValidator, _merge_attributes(attr_names)
end