Module: Devise::Models
- Defined in:
- lib/devise/models.rb,
lib/devise/models/lockable.rb,
lib/devise/models/trackable.rb,
lib/devise/models/confirmable.rb,
lib/devise/models/recoverable.rb,
lib/devise/models/timeoutable.rb,
lib/devise/models/validatable.rb,
lib/devise/models/registerable.rb,
lib/devise/models/rememberable.rb,
lib/devise/models/authenticatable.rb,
lib/devise/models/token_authenticatable.rb,
lib/devise/models/database_authenticatable.rb
Defined Under Namespace
Modules: Authenticatable, Confirmable, DatabaseAuthenticatable, Lockable, Recoverable, Registerable, Rememberable, Timeoutable, TokenAuthenticatable, Trackable, Validatable
Class Method Summary collapse
-
.config(mod, *accessors) ⇒ Object
Creates configuration values for Devise and for the given module.
Instance Method Summary collapse
-
#devise(*modules) ⇒ Object
Include the chosen devise modules in your model:.
-
#devise_modules_hook! ⇒ Object
The hook which is called inside devise.
Class Method Details
.config(mod, *accessors) ⇒ Object
Creates configuration values for Devise and for the given module.
Devise::Models.config(Devise::Authenticable, :stretches, 10)
The line above creates:
1) An accessor called Devise.stretches, which value is used by default;
2) Some class methods for your model Model.stretches and Model.stretches=
which have higher priority than Devise.stretches;
3) And an instance method stretches.
To add the class methods you need to have a module ClassMethods defined inside the given class.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/devise/models.rb', line 19 def self.config(mod, *accessors) #:nodoc: accessors.each do |accessor| mod.class_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{accessor} if defined?(@#{accessor}) @#{accessor} elsif superclass.respond_to?(:#{accessor}) superclass.#{accessor} else Devise.#{accessor} end end def #{accessor}=(value) @#{accessor} = value end METHOD end end |
Instance Method Details
#devise(*modules) ⇒ Object
Include the chosen devise modules in your model:
devise :database_authenticatable, :confirmable, :recoverable
You can also give any of the devise configuration values in form of a hash, with specific values for this model. Please check your Devise initializer for a complete description on those values.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/devise/models.rb', line 47 def devise(*modules) include Devise::Models::Authenticatable = modules. if modules.delete(:authenticatable) ActiveSupport::Deprecation.warn ":authenticatable as module is deprecated. Please give :database_authenticatable instead.", caller modules << :database_authenticatable end if modules.delete(:activatable) ActiveSupport::Deprecation.warn ":activatable as module is deprecated. It's included in your model by default.", caller end if modules.delete(:http_authenticatable) ActiveSupport::Deprecation.warn ":http_authenticatable as module is deprecated and is on by default. Revert by setting :http_authenticatable => false.", caller end self.devise_modules += Devise::ALL & modules.map(&:to_sym).uniq devise_modules_hook! do devise_modules.each { |m| include Devise::Models.const_get(m.to_s.classify) } .each { |key, value| send(:"#{key}=", value) } end end |
#devise_modules_hook! ⇒ Object
The hook which is called inside devise. So your ORM can include devise compatibility stuff.
74 75 76 |
# File 'lib/devise/models.rb', line 74 def devise_modules_hook! yield end |