module NestedRecord

Constants

VERSION

Public Class Methods

lookup_const(owner, type_name) click to toggle source

Derived from Rails source: github.com/rails/rails/blob/98a57aa5f610bc66af31af409c72173cdeeb3c9e/activerecord/lib/active_record/inheritance.rb#L181-L207

# File lib/nested_record/lookup_const.rb, line 6
def self.lookup_const(owner, type_name)
  if type_name.start_with?('::')
    ActiveSupport::Dependencies.constantize(type_name)
  else
    candidates = []
    owner.name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
    candidates << type_name

    candidates.each do |candidate|
      constant = ActiveSupport::Dependencies.safe_constantize(candidate)
      return constant if candidate == constant.to_s
    end

    raise NameError.new("uninitialized constant #{candidates.first}", candidates.first)
  end
end