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..128.

Defined Under Namespace

Modules: ClassMethods

Constant Summary

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)

Instance Method Summary (collapse)

Class Method Details

+ (Object) assert_validations_api!(base)

:nodoc:



39
40
41
42
43
44
45
46
# File 'lib/devise/models/validatable.rb', line 39

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

+ (Object) required_fields(klass)



20
21
22
# File 'lib/devise/models/validatable.rb', line 20

def self.required_fields(klass)
  []
end

Instance Method Details

- (Boolean) email_required? (protected)



57
58
59
# File 'lib/devise/models/validatable.rb', line 57

def email_required?
  true
end

- (Boolean) password_required? (protected)

Checks whether a password is needed or not. For validations only. Passwords are always required if it's a new record, or if the password or confirmation are being set somewhere.



53
54
55
# File 'lib/devise/models/validatable.rb', line 53

def password_required?
  !persisted? || !password.nil? || !password_confirmation.nil?
end