nyscapes/nywalker-server

View on GitHub
app/models/user.rb

Summary

Maintainability
A
1 hr
Test Coverage
# frozen_string_literal: true
require "securerandom"

class User < Sequel::Model
  plugin :validation_helpers
  plugin :secure_password

  one_to_many :instances
  many_to_many :books, left_key: :book_id, right_key: :user_id, join_table: :book_users
  one_to_many :places
  one_to_many :flags

  def validate
    super
    validates_presence [:username, :email]
    validates_unique [:email]
  end

  def after_create
    super
    self.api_key = SecureRandom.base64 14
    self.added_on = Time.now
  end

  def after_save
    self.modified_on = Time.now
  end

  def has_key?(key)
    true
  end

  def admin?
    self.admin
  end

  def fullname
    if self.lastname.nil? && self.firstname
      self.firstname
    elsif self.firstname.nil? && self.lastname
      self.lastname
    elsif self.firstname.nil? && self.lastname.nil?
      self.name
    else
      "#{self.firstname} #{self.lastname}"
    end
  end

  def fullname_lastname_first
    if self.lastname.nil? && self.firstname
      self.firstname
    elsif self.firstname.nil? && self.lastname
      self.lastname
    elsif self.firstname.nil? && self.lastname.nil?
      self.name
    else
      "#{self.lastname}, #{self.firstname}"
    end
  end
end