module Authenticatable::Models::ClassMethods
Attributes
authenticatable_extensions[RW]
authenticatable_loaded_extensions[RW]
Public Instance Methods
authenticatable(*extensions)
click to toggle source
# File lib/authenticatable/models.rb, line 15 def authenticatable(*extensions) opts = extensions.extract_options! # Add default extensions to class variable @authenticatable_extensions. These are added to a global accessible # class var, so that we can access them from other places, like in extensions, views or controllers. @authenticatable_extensions = (Authenticatable.config.default_extensions + extensions).uniq # We'll add extensions here while they loaded. Can be useful for debugging @authenticatable_loaded_extensions = [] # Remove extensions that are specified in the :skip attribute from the @authenticatable_extensions # array. This can be useful if you for example want to disable any of the default extensions. opts[:skip] = [opts[:skip]].flatten opts[:skip].each { |s| @authenticatable_extensions.delete(s) } if opts[:skip].present? # Load extensions into model load_model_extensions end
Private Instance Methods
load_model_extensions()
click to toggle source
Loads extension concerns/mixins into the model class if it can find a module with the classified extension name in the Authenticatable::Models
namespace.
Example:
authenticatable extensions: { :email_validator }
will include a module with name (if it exists):
Authenticatable::Models::EmailValidator
# File lib/authenticatable/models.rb, line 44 def load_model_extensions @authenticatable_extensions.each do |extension| module_name = "Authenticatable::Models::#{extension.to_s.classify}" next unless const_defined?(module_name) extension_module = const_get(module_name) include extension_module @authenticatable_loaded_extensions << module_name end end