ApiBootstraper/Rails-server

View on GitHub
app/models/user.rb

Summary

Maintainability
A
0 mins
Test Coverage
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable and :omniauthable
  devise :database_authenticatable, :token_authenticatable, :registerable, :encryptable,
         :recoverable, :rememberable, :trackable, :validatable, :lockable, :timeoutable

  # Accessors
  attr_accessible :email, :password, :password_confirmation, :remember_me
  attr_accessible :username, :enable

  # Hooks
  before_create :before_create

  # Associations
  has_many :todos

  # Validators
  validates :uuid,      :uniqueness => true
  validates :username,  :presence => true,
                        :uniqueness => true,
                        :format => {:with => /^[A-Za-z\d_-]+$/, :message => "can only be alphanumeric with no spaces"}
  validates :email,     :presence => true,
                        :uniqueness => true

  validates :password,  :presence => true, :on => :create

  # Named Scopes
  scope :enabled,     lambda{ where("is_enable = ?", true) }
  scope :disabled,    lambda{ where("is_enable != ?", true) }


  # API V1.0.0 // Verify Authenticate
  def self.api_v100_is_correct_user?(email, password)
    user = self.find_by_email(email.downcase)
    if user and user.valid_password?(password)
      return user
    end
    return false
  end


  # Enable / Disable entity
  def enable=(value)
    self.is_enable = value
    self.enabled_at = Time.now
  end
  def enable; self.is_enable end
  def is_enable?; self.is_enable ? true : false end

  def enable!
    self.enable = true
    self.save!
  end

  def disable!
    self.enable = false
    self.save!
  end

  def self.total_count
    offset(nil).limit(nil).count
  end

private
  def before_create
    self.uuid   = UUID.generate
    self.enable = true
  end

end