Sha256: 9d6c0d326386ff99b3af432500de41677c6a0f749ad010c2f3850d8407162abb
Contents?: true
Size: 1.1 KB
Versions: 16
Compression:
Stored size: 1.1 KB
Contents
module Gaku class User < ActiveRecord::Base has_many :user_roles has_many :roles, through: :user_roles devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable store :settings, accessors: [:locale] attr_accessor :login validates :username, presence: true, uniqueness: true roles_table_name = Role.table_name scope :admin, -> { includes(:roles).where("#{roles_table_name}.name" => 'Admin') } def to_s username end # Override Devise::Models::Authenticatable#find_first_by_auth_conditions # so login can be authenticated against username or email def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup login = conditions.delete(:login) if login where(conditions).where( ['lower(username) = :value OR lower(email) = :value', { value: login.downcase }] ).first else where(conditions).first end end def role?(role) roles.where(name: role.to_s.camelize).any? end end end
Version data entries
16 entries across 16 versions & 2 rubygems