Module: Devise::Models::Validatable
- Defined in:
- lib/devise/models/validatable.rb
Overview
Validatable creates all needed validations for a user email and password. It’s optional, given you may want to create the validations by yourself. Automatically validate if the email is present, unique and its format is valid. Also tests presence of password, confirmation and length.
Options
Validatable adds the following options to devise_for:
* +email_regexp+: the regular expression used to validate e-mails;
* +password_length+: a range expressing password length. Defaults to 8..72.
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- VALIDATIONS =
All validations used by this module.
[:validates_presence_of, :validates_uniqueness_of, :validates_format_of, :validates_confirmation_of, :validates_length_of].freeze
Class Method Summary collapse
-
.assert_validations_api!(base) ⇒ Object
:nodoc:.
- .included(base) ⇒ Object
- .required_fields(klass) ⇒ Object
Class Method Details
.assert_validations_api!(base) ⇒ Object
:nodoc:
49 50 51 52 53 54 55 56 |
# File 'lib/devise/models/validatable.rb', line 49 def self.assert_validations_api!(base) #:nodoc: unavailable_validations = VALIDATIONS.select { |v| !base.respond_to?(v) } unless unavailable_validations.empty? raise "Could not use :validatable module since #{base} does not respond " << "to the following methods: #{unavailable_validations.to_sentence}." end end |
.included(base) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/devise/models/validatable.rb', line 24 def self.included(base) base.extend ClassMethods assert_validations_api!(base) base.class_eval do validates_presence_of :email, if: :email_required? validates_format_of :email, with: email_regexp, allow_blank: true, if: :email_changed? if base == Gemgento::User validates_uniqueness_of :email, allow_blank: true, if: :email_changed?, scope: :deleted_at else validates_uniqueness_of :email, allow_blank: true, if: :email_changed? end validates_presence_of :password, if: :password_required? validates_confirmation_of :password, if: :password_required? validates_length_of :password, within: password_length, allow_blank: true def unique_email_scope [] end end end |
.required_fields(klass) ⇒ Object
20 21 22 |
# File 'lib/devise/models/validatable.rb', line 20 def self.required_fields(klass) [] end |