Module: Devise::Models
- Defined in:
- lib/devise/models.rb,
lib/devise/models/lockable.rb,
lib/devise/models/trackable.rb,
lib/devise/models/validatable.rb,
lib/devise/models/encryptable.rb,
lib/devise/models/recoverable.rb,
lib/devise/models/confirmable.rb,
lib/devise/models/timeoutable.rb,
lib/devise/models/registerable.rb,
lib/devise/models/omniauthable.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, Encryptable, Lockable, Omniauthable, Recoverable, Registerable, Rememberable, Timeoutable, TokenAuthenticatable, Trackable, Validatable Classes: MissingAttribute
Class Method Summary (collapse)
- + (Object) check_fields!(klass)
-
+ (Object) config(mod, *accessors)
Creates configuration values for Devise and for the given module.
Instance Method Summary (collapse)
-
- (Object) devise(*modules)
Include the chosen devise modules in your model:.
-
- (Object) devise_modules_hook!
The hook which is called inside devise.
Class Method Details
+ (Object) check_fields!(klass)
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/devise/models.rb', line 52 def self.check_fields!(klass) failed_attributes = [] klass.devise_modules.each do |mod| instance = klass.new const_get(mod.to_s.classify).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 |
+ (Object) config(mod, *accessors)
Creates configuration values for Devise and for the given module.
Devise::Models.config(Devise::Authenticatable, :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.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/devise/models.rb', line 29 def self.config(mod, *accessors) #:nodoc: (class << mod; self; end).send :attr_accessor, :available_configs 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
- (Object) devise(*modules)
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.
76 77 78 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 |
# File 'lib/devise/models.rb', line 76 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::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 |
- (Object) devise_modules_hook!
The hook which is called inside devise. So your ORM can include devise compatibility stuff.
111 112 113 |
# File 'lib/devise/models.rb', line 111 def devise_modules_hook! yield end |