class Sorcery::Adapters::ActiveRecordAdapter
Public Class Methods
define_callback(time, event, method_name, options = {})
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 37 def define_callback(time, event, method_name, options = {}) @klass.send "#{time}_#{event}", method_name, **options.slice(:if, :on) end
define_field(name, type, options = {})
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 33 def define_field(name, type, options = {}) # AR fields are defined through migrations, only validator here end
find_by_activation_token(token)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 81 def find_by_activation_token(token) @klass.where(@klass.sorcery_config.activation_token_attribute_name => token).first end
find_by_credentials(credentials)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 55 def find_by_credentials(credentials) relation = nil @klass.sorcery_config.username_attribute_names.each do |attribute| if @klass.sorcery_config.downcase_username_before_authenticating condition = @klass.arel_table[attribute].lower.eq(@klass.arel_table.lower(credentials[0])) else condition = @klass.arel_table[attribute].eq(credentials[0]) end relation = if relation.nil? condition else relation.or(condition) end end @klass.where(relation).first end
find_by_email(email)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 100 def find_by_email(email) @klass.where(@klass.sorcery_config.email_attribute_name => email).first end
find_by_id(id)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 85 def find_by_id(id) @klass.find_by_id(id) end
find_by_oauth_credentials(provider, uid)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 41 def find_by_oauth_credentials(provider, uid) @user_config ||= ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config conditions = { @user_config.provider_uid_attribute_name => uid, @user_config.provider_attribute_name => provider } @klass.where(conditions).first end
find_by_remember_me_token(token)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 51 def find_by_remember_me_token(token) @klass.where(@klass.sorcery_config.remember_me_token_attribute_name => token).first end
find_by_token(token_attr_name, token)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 75 def find_by_token(token_attr_name, token) condition = @klass.arel_table[token_attr_name].eq(token) @klass.where(condition).first end
find_by_username(username)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 89 def find_by_username(username) @klass.sorcery_config.username_attribute_names.each do |attribute| if @klass.sorcery_config.downcase_username_before_authenticating username = username.downcase end result = @klass.where(attribute => username).first return result if result end end
transaction(&blk)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 104 def transaction(&blk) @klass.tap(&blk) end
Public Instance Methods
find_authentication_by_oauth_credentials(relation_name, provider, uid)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 22 def find_authentication_by_oauth_credentials(relation_name, provider, uid) @user_config ||= ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config conditions = { @user_config.provider_uid_attribute_name => uid, @user_config.provider_attribute_name => provider } @model.public_send(relation_name).where(conditions).first end
increment(field)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 18 def increment(field) @model.increment!(field) end
save(options = {})
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 13 def save(options = {}) mthd = options.delete(:raise_on_failure) ? :save! : :save @model.send(mthd, **options) end
update_attributes(attrs)
click to toggle source
# File lib/sorcery/adapters/active_record_adapter.rb, line 4 def update_attributes(attrs) attrs.each do |name, value| @model.send(:"#{name}=", value) end primary_key = @model.class.primary_key updated_count = @model.class.where(:"#{primary_key}" => @model.send(:"#{primary_key}")).update_all(attrs) updated_count == 1 end