class DbSpiderReaderNode

Attributes

rec[R]

Public Class Methods

new(rec, data_columns = nil) click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 4
def initialize rec, data_columns = nil
  @rec = rec
  @data_columns = data_columns || @rec.class.column_names
  @ref_nodes = {}
  @traversed = false
end

Public Instance Methods

add_reflection_node(node, ref) click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 49
def add_reflection_node node, ref
  @ref_nodes[ref.name] ||= []
  @ref_nodes[ref.name] << node
end
children() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 62
def children
  reflections
    .map{|ref| @ref_nodes[ref.name].to_a}
    .flatten
    .compact
    .sort_by{|n| n.rec.class.name}
end
data() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 58
def data
  @rec.attributes.slice *@data_columns
end
data_tree() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 23
def data_tree
  {
    data:        data,
    class_name:  @rec.class.name,
    original_id: @rec.id,
    reflections: reflections_data
  }
end
eql?(other) click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 54
def eql? other # used by Hash to compare keys
  @rec.eql? other
end
excl_data_cols(excl) click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 11
def excl_data_cols excl
  @data_columns -= [excl]
end
reflection_records(ref) click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 44
def reflection_records ref
  recs = @rec.send ref.name
  [recs].flatten.compact
end
reflections() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 40
def reflections
  @rec.class.reflections.values
end
reflections_data() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 32
def reflections_data
  rd = {}
  @ref_nodes.each_pair do |ref_name, nodes|
    rd[ref_name] = nodes.map &:data_tree
  end
  rd
end
traversed!() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 19
def traversed!
  @traversed = true
end
traversed?() click to toggle source
# File lib/db_facet/db_spider_reader_node.rb, line 15
def traversed?
  @traversed
end