Module: Devise::Models::Authenticatable::ClassMethods
- Defined in:
- lib/devise/models/authenticatable.rb
Instance Method Summary collapse
- #find_first_by_auth_conditions(conditions) ⇒ Object
-
#find_for_authentication(conditions) ⇒ Object
Find first record based on conditions given (ie by the sign in form).
-
#find_or_initialize_with_error_by(attribute, value, error = :invalid) ⇒ Object
Find an initialize a record setting an error if it can’t be found.
-
#find_or_initialize_with_errors(required_attributes, attributes, error = :invalid) ⇒ Object
Find an initialize a group of attributes based on a list of required attributes.
- #http_authenticatable?(strategy) ⇒ Boolean
- #params_authenticatable?(strategy) ⇒ Boolean
- #serialize_from_session(key, salt) ⇒ Object
- #serialize_into_session(record) ⇒ Object
Instance Method Details
#find_first_by_auth_conditions(conditions) ⇒ Object
221 222 223 |
# File 'lib/devise/models/authenticatable.rb', line 221 def find_first_by_auth_conditions(conditions) to_adapter.find_first devise_param_filter.filter(conditions) end |
#find_for_authentication(conditions) ⇒ Object
Find first record based on conditions given (ie by the sign in form). This method is always called during an authentication process but it may be wrapped as well. For instance, database authenticatable provides a ‘find_for_database_authentication` that wraps a call to this method. This allows you to customize both database authenticatable or the whole authenticate stack by customize `find_for_authentication.`
Overwrite to add customized conditions, create a join, or maybe use a namedscope to filter records while authenticating. Example:
def self.find_for_authentication(conditions={})
conditions[:active] = true
super
end
Finally, notice that Devise also queries for users in other scenarios besides authentication, for example when retrieving an user to send an e-mail for password reset. In such cases, find_for_authentication is not called.
217 218 219 |
# File 'lib/devise/models/authenticatable.rb', line 217 def find_for_authentication(conditions) find_first_by_auth_conditions(conditions) end |
#find_or_initialize_with_error_by(attribute, value, error = :invalid) ⇒ Object
Find an initialize a record setting an error if it can’t be found.
226 227 228 |
# File 'lib/devise/models/authenticatable.rb', line 226 def find_or_initialize_with_error_by(attribute, value, error=:invalid) #:nodoc: find_or_initialize_with_errors([attribute], { attribute => value }, error) end |
#find_or_initialize_with_errors(required_attributes, attributes, error = :invalid) ⇒ Object
Find an initialize a group of attributes based on a list of required attributes.
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
# File 'lib/devise/models/authenticatable.rb', line 231 def find_or_initialize_with_errors(required_attributes, attributes, error=:invalid) #:nodoc: attributes = attributes.slice(*required_attributes) attributes.delete_if { |key, value| value.blank? } if attributes.size == required_attributes.size record = find_first_by_auth_conditions(attributes) end unless record record = new required_attributes.each do |key| value = attributes[key] record.send("#{key}=", value) record.errors.add(key, value.present? ? error : :blank) end end record end |
#http_authenticatable?(strategy) ⇒ Boolean
192 193 194 195 |
# File 'lib/devise/models/authenticatable.rb', line 192 def http_authenticatable?(strategy) http_authenticatable.is_a?(Array) ? http_authenticatable.include?(strategy) : http_authenticatable end |
#params_authenticatable?(strategy) ⇒ Boolean
187 188 189 190 |
# File 'lib/devise/models/authenticatable.rb', line 187 def params_authenticatable?(strategy) params_authenticatable.is_a?(Array) ? params_authenticatable.include?(strategy) : params_authenticatable end |
#serialize_from_session(key, salt) ⇒ Object
182 183 184 185 |
# File 'lib/devise/models/authenticatable.rb', line 182 def serialize_from_session(key, salt) record = to_adapter.get(key) record if record && record.authenticatable_salt == salt end |
#serialize_into_session(record) ⇒ Object
178 179 180 |
# File 'lib/devise/models/authenticatable.rb', line 178 def serialize_into_session(record) [record.to_key, record.authenticatable_salt] end |