Module: Devise::Schema
- Included in:
- Orm::ActiveRecord::Schema, Orm::Mongoid::Schema
- Defined in:
- lib/devise/schema.rb
Overview
Holds devise schema information. To use it, just include its methods and overwrite the apply_schema method.
Instance Method Summary collapse
-
#apply_devise_schema(name, type, options = {}) ⇒ Object
Overwrite with specific modification to create your own schema.
-
#confirmable ⇒ Object
Creates confirmation_token, confirmed_at and confirmation_sent_at.
-
#database_authenticatable(options = {}) ⇒ Object
Creates encrypted_password, and email when it is used as an authentication key (default).
-
#encryptable ⇒ Object
Creates password salt for encryption support when using encryptors other than the database_authenticable default of bcrypt.
-
#lockable(options = {}) ⇒ Object
Creates failed_attempts, unlock_token and locked_at depending on the options given.
-
#reconfirmable ⇒ Object
Creates unconfirmed_email.
-
#recoverable(options = {}) ⇒ Object
Creates reset_password_token and reset_password_sent_at.
-
#rememberable(options = {}) ⇒ Object
Creates remember_token and remember_created_at.
-
#token_authenticatable ⇒ Object
Creates authentication_token.
-
#trackable ⇒ Object
Creates sign_in_count, current_sign_in_at, last_sign_in_at, current_sign_in_ip, last_sign_in_ip.
Instance Method Details
#apply_devise_schema(name, type, options = {}) ⇒ Object
Overwrite with specific modification to create your own schema.
105 106 107 |
# File 'lib/devise/schema.rb', line 105 def apply_devise_schema(name, type, ={}) raise NotImplementedError end |
#confirmable ⇒ Object
Creates confirmation_token, confirmed_at and confirmation_sent_at.
37 38 39 40 41 |
# File 'lib/devise/schema.rb', line 37 def confirmable apply_devise_schema :confirmation_token, String apply_devise_schema :confirmed_at, DateTime apply_devise_schema :confirmation_sent_at, DateTime end |
#database_authenticatable(options = {}) ⇒ Object
Creates encrypted_password, and email when it is used as an authentication key (default).
Options
-
:null - When true, allow columns to be null.
-
:default - Set to “” when :null is false, unless overridden.
Notes
For Datamapper compatibility, we explicitly hardcode the limit for the encrypter password field in 128 characters.
16 17 18 19 20 21 22 23 |
# File 'lib/devise/schema.rb', line 16 def database_authenticatable(={}) null = [:null] || false default = .key?(:default) ? [:default] : ("" if null == false) include_email = !respond_to?(:authentication_keys) || self.authentication_keys.include?(:email) apply_devise_schema :email, String, :null => null, :default => default if include_email apply_devise_schema :encrypted_password, String, :null => null, :default => default, :limit => 128 end |
#encryptable ⇒ Object
Creates password salt for encryption support when using encryptors other than the database_authenticable default of bcrypt.
27 28 29 |
# File 'lib/devise/schema.rb', line 27 def encryptable apply_devise_schema :password_salt, String end |
#lockable(options = {}) ⇒ Object
Creates failed_attempts, unlock_token and locked_at depending on the options given.
Options
-
:unlock_strategy - The strategy used for unlock. Can be :time, :email, :both (default), :none. If :email or :both, creates a unlock_token field.
-
:lock_strategy - The strategy used for locking. Can be :failed_attempts (default) or :none.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/devise/schema.rb', line 84 def lockable(={}) unlock_strategy = [:unlock_strategy] unlock_strategy ||= self.unlock_strategy if respond_to?(:unlock_strategy) unlock_strategy ||= :both lock_strategy = [:lock_strategy] lock_strategy ||= self.lock_strategy if respond_to?(:lock_strategy) lock_strategy ||= :failed_attempts if lock_strategy == :failed_attempts apply_devise_schema :failed_attempts, Integer, :default => 0 end if [:both, :email].include?(unlock_strategy) apply_devise_schema :unlock_token, String end apply_devise_schema :locked_at, DateTime end |
#reconfirmable ⇒ Object
Creates unconfirmed_email
44 45 46 |
# File 'lib/devise/schema.rb', line 44 def reconfirmable apply_devise_schema :unconfirmed_email, String end |
#recoverable(options = {}) ⇒ Object
Creates reset_password_token and reset_password_sent_at.
Options
-
:reset_within - When true, adds a column that reset passwords within some date
52 53 54 55 56 |
# File 'lib/devise/schema.rb', line 52 def recoverable(={}) use_within = .fetch(:reset_within, Devise.reset_password_within.present?) apply_devise_schema :reset_password_token, String apply_devise_schema :reset_password_sent_at, DateTime if use_within end |
#rememberable(options = {}) ⇒ Object
Creates remember_token and remember_created_at.
Options
-
:use_salt - When true, does not create a remember_token and use password_salt instead.
62 63 64 65 66 |
# File 'lib/devise/schema.rb', line 62 def rememberable(={}) use_salt = .fetch(:use_salt, Devise.use_salt_as_remember_token) apply_devise_schema :remember_token, String unless use_salt apply_devise_schema :remember_created_at, DateTime end |
#token_authenticatable ⇒ Object
Creates authentication_token.
32 33 34 |
# File 'lib/devise/schema.rb', line 32 def token_authenticatable apply_devise_schema :authentication_token, String end |
#trackable ⇒ Object
Creates sign_in_count, current_sign_in_at, last_sign_in_at, current_sign_in_ip, last_sign_in_ip.
70 71 72 73 74 75 76 |
# File 'lib/devise/schema.rb', line 70 def trackable apply_devise_schema :sign_in_count, Integer, :default => 0 apply_devise_schema :current_sign_in_at, DateTime apply_devise_schema :last_sign_in_at, DateTime apply_devise_schema :current_sign_in_ip, String apply_devise_schema :last_sign_in_ip, String end |