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/omniauthable.rb,
lib/devise/models/registerable.rb,
lib/devise/models/rememberable.rb,
lib/devise/models/authenticatable.rb,
lib/devise/models/database_authenticatable.rb
Defined Under Namespace
Modules: Authenticatable, Confirmable, DatabaseAuthenticatable, Lockable, Omniauthable, Recoverable, Registerable, Rememberable, Timeoutable, Trackable, Validatable Classes: MissingAttribute
Class Method Summary collapse
- .check_fields!(klass) ⇒ Object
-
.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
.check_fields!(klass) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/devise/models.rb', line 54 def self.check_fields!(klass) failed_attributes = [] instance = klass.new klass.devise_modules.each do |mod| constant = const_get(mod.to_s.classify) constant.required_fields(klass).each do |field| failed_attributes << field unless instance.respond_to?(field) end end if failed_attributes.any? fail Devise::Models::MissingAttribute.new(failed_attributes) end end |
.config(mod, *accessors) ⇒ Object
Creates configuration values for Devise and for the given module.
Devise::Models.config(Devise::Models::DatabaseAuthenticatable, :stretches)
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.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/devise/models.rb', line 31 def self.config(mod, *accessors) #:nodoc: class << mod; attr_accessor :available_configs; end mod.available_configs = accessors 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.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/devise/models.rb', line 79 def devise(*modules) = modules..dup selected_modules = modules.map(&:to_sym).uniq.sort_by do |s| Devise::ALL.index(s) || -1 # follow Devise::ALL order end devise_modules_hook! do include Devise::Orm include Devise::Models::Authenticatable selected_modules.each do |m| mod = Devise::Models.const_get(m.to_s.classify) if mod.const_defined?("ClassMethods") class_mod = mod.const_get("ClassMethods") extend class_mod if class_mod.respond_to?(:available_configs) available_configs = class_mod.available_configs available_configs.each do |config| next unless .key?(config) send(:"#{config}=", .delete(config)) end end end include mod end self.devise_modules |= selected_modules .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.
116 117 118 |
# File 'lib/devise/models.rb', line 116 def devise_modules_hook! yield end |