Sha256: f61c627131faf3e733ccc8073488c3f688d3f506d0965efafe9b405e36534e30

Contents?: true

Size: 820 Bytes

Versions: 1

Compression:

Stored size: 820 Bytes

Contents

module Traits
  class UnidentifiedModelReference < StandardError
  end

  module Utilities
    def retrieve_model_class(obj)
      if active_record_descendant?(obj)
        obj

      elsif active_record_instance?(obj)
        obj.class

      else
        case obj
          when Symbol then obj.to_s.camelize.constantize
          when String then obj.camelize.constantize
          when Model  then obj.model_class
          else raise UnidentifiedModelReference, obj
        end
      end
    end

    def active_record_descendant?(obj)
      obj.kind_of?(Class) && obj < ActiveRecord::Base
    end

    def active_record_instance?(obj)
      obj.kind_of?(ActiveRecord::Base)
    end

    def valid_active_record_identifier?(id)
      id.kind_of?(String) || id.kind_of?(Numeric)
    end
  end

  extend Utilities
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activerecord-traits-1.0.0 lib/traits/utilities.rb