Sha256: 722ba1d7c4a1ed99cc3d9defd28b6cfb76e4df2942256297edd1ac1a6cd4509d

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

class User < ActiveRecord::Base

  has_secure_password

  # associations connected to tkh_content gem. Any page or comment model will do
  has_many :pages
  has_many :comments, :dependent => :destroy

  # not allowed are :admin:boolean, :auth_token:string, password_reset_token:string, password_reset_sent_at:datetime
  attr_accessible :email, :password, :password_confirmation, :first_name, :last_name, :other_name

  validates_presence_of :email
  validates_uniqueness_of :email, :case_sensitive => false
  validates_presence_of :password, on: :create
  validates_presence_of :first_name
  validates_presence_of :last_name

  scope :alphabetically, order('last_name, first_name')
  scope :administrators, where('admin = ?', true)

  before_create { generate_token(:auth_token) }

  # use the stringex gem to create slug | usually on the title or name attribute
  def to_param
    "#{id}-#{name.to_url}"
  end

  scope :by_recent, :order => 'updated_at desc'

  def name
    "#{first_name} #{last_name}".strip
  end

  def formal_name
    "#{last_name}, #{first_name}".strip
  end

  def spiritual_name
    @spiritual_name = other_name || first_name
  end

  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tkh_authentication-0.9.2 app/models/user.rb
tkh_authentication-0.9.1 app/models/user.rb
tkh_authentication-0.9 app/models/user.rb