class Structural::Model::Association::Hierarchy

Attributes

child[R]
path[R]

Public Class Methods

new(path, child) click to toggle source
# File lib/structural/model/association.rb, line 21
def initialize(path, child)
  @path = path
  @child = child
end

Public Instance Methods

constants() click to toggle source
# File lib/structural/model/association.rb, line 32
def constants
  hierarchy.map(&:constantize)
end
parent() click to toggle source
# File lib/structural/model/association.rb, line 26
def parent
  @parent ||= constants.find do |c|
    c.ancestors.find { |anc| anc.const_defined? child }
  end
end

Private Instance Methods

hierarchy(name=path) click to toggle source
# File lib/structural/model/association.rb, line 38
def hierarchy(name=path)
  name.match(/(.*)::.*$/)
  $1 ? [name] + hierarchy($1) : [name]
end