Module: NestedRecord

Defined in:
lib/nested_record.rb,
lib/nested_record/errors.rb,
lib/nested_record/version.rb,
lib/nested_record/lookup_const.rb

Defined Under Namespace

Modules: Concern, Macro Classes: Base, Collection, CollectionProxy, ConfigurationError, Error, InvalidTypeError, MacroRecorder, Methods, NestedAccessorsSetup, PrimaryKeyCheck, PrimaryKeyError, Setup, Type, TypeMismatchError

Constant Summary collapse

VERSION =
'1.1.1'

Class Method Summary collapse

Class Method Details

.constantize(type_name) ⇒ Object



6
7
8
# File 'lib/nested_record/lookup_const.rb', line 6

def self.constantize(type_name)
  ActiveSupport::Dependencies.constantize(type_name)
end

.lookup_const(owner, type_name) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/nested_record/lookup_const.rb', line 24

def self.lookup_const(owner, type_name)
  if type_name.start_with?('::')
    NestedRecord.constantize(type_name)
  else
    candidates = []
    owner.name.scan(/::|$/) { candidates.unshift "#{$`}::#{type_name}" }
    candidates << type_name

    candidates.each do |candidate|
      constant = NestedRecord.safe_constantize(candidate)
      return constant if candidate == constant.to_s
    end

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

.safe_constantize(type_name) ⇒ Object



10
11
12
# File 'lib/nested_record/lookup_const.rb', line 10

def self.safe_constantize(type_name)
  ActiveSupport::Dependencies.safe_constantize(type_name)
end