Sha256: d945a88452f8f8eae14634c049c1f11797264b6c3db3d5f704ad7dc8b0c13fdf
Contents?: true
Size: 1.48 KB
Versions: 6
Compression:
Stored size: 1.48 KB
Contents
module Symphonia module UserManagement extend ActiveSupport::Concern included do enum status: { active: 1, pending: 5, archived: 9 } scope :sorted, -> { order(:first_name, :last_name) } validates :email, presence: true, uniqueness: { case_sensitive: false } validates :login, presence: true, uniqueness: { case_sensitive: false } validates :first_name, presence: true before_validation :set_uuid, only: -> { uuid.blank? } before_validation :set_login, only: -> { login.blank? } def self.current=(entity) Rails.logger.info("* #{entity.class.name}: #{entity.login} id: #{entity.id}") if entity Thread.current[:"current_#{name.underscore}"] = entity end def self.current Thread.current[:"current_#{name.underscore}"] ||= "#{self}::Anonymous".constantize.new end def name "#{first_name} #{last_name}" end def name=(string) words = string.split(" ") self.first_name = words[0..-2].join(" ") self.last_name = words[-1] end def status_new? pending? end def lock? !active? end alias_method :archive?, :lock? def archive! archived! end def unarchive! active! end alias_method :activate!, :unarchive! private def set_uuid self.uuid ||= SecureRandom.uuid end def set_login self.login ||= email end end end end
Version data entries
6 entries across 6 versions & 1 rubygems