Sha256: b20bfb8578a3a4153f6376c043499e71e5fda4d22248f393b842a5f0d7170428

Contents?: true

Size: 869 Bytes

Versions: 2

Compression:

Stored size: 869 Bytes

Contents

module Nameable
  extend ActiveSupport::Concern
  include FieldsValidator

  included do
    validate_required_attributes
  end

  class_methods do
    def required_attributes
      result=defined?(super) ? super : []
      result+=required_nameable_attributes
    end

    def required_database_fields
      result=defined?(super) ? super : []
      result+=[:firstname, :lastname]
    end

    def required_nameable_attributes
      [:firstname,:lastname]
    end
  end

  public

  def first_name
    firstname
  end

  def first_name=(thing)
    self.firstname=thing
  end

  def full_name
    "#{firstname} #{lastname}"
  end

  def proper_name
    "#{lastname.upcase}, #{firstname}"
  end

  def surname
    lastname
  end

  def surname=(thing)
    self.lastname=thing
  end

  def title
    return super if defined?(super)
    full_name
  end

  private


end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
morse_nameable-1.2.1 lib/nameable.rb
morse_nameable-1.2.0 lib/nameable.rb