jwood/auroraalarm

View on GitHub
app/models/user.rb

Summary

Maintainability
A
0 mins
Test Coverage
class User < ActiveRecord::Base

  attr_accessor :user_location_value

  has_one :user_location, dependent: :destroy
  has_one :aurora_alert, dependent: :destroy
  has_many :alert_permissions, dependent: :destroy

  before_validation :sanitize_mobile_phone

  validates :mobile_phone, presence: true, uniqueness: true, length: { maximum: 15 }
  validate :validate_mobile_phone_format

  scope :confirmed, -> { where('confirmed_at IS NOT NULL') }

  def confirmed?
    !self.confirmed_at.nil?
  end

  def confirm!
    self.update_attributes!(confirmed_at: Time.now)
  end

  def unapproved_alert_permission
    alert_permissions.unapproved.first
  end

  private

  def sanitize_mobile_phone
    self.mobile_phone = SignalApi::Phone.sanitize(self.mobile_phone)
  end

  def validate_mobile_phone_format
    unless SignalApi::Phone.valid?(self.mobile_phone)
      errors.add(:mobile_phone, "is not valid")
    end
  end

end