Class: DbSpiderReaderNode
- Inherits:
-
Object
- Object
- DbSpiderReaderNode
- Defined in:
- lib/db_facet/db_spider_reader_node.rb
Instance Attribute Summary collapse
-
#rec ⇒ Object
readonly
Returns the value of attribute rec.
Instance Method Summary collapse
- #add_reflection_node(node, ref) ⇒ Object
- #children ⇒ Object
- #data ⇒ Object
- #data_tree ⇒ Object
-
#eql?(other) ⇒ Boolean
used by Hash to compare keys.
- #excl_data_cols(excl) ⇒ Object
-
#initialize(rec, data_columns = nil) ⇒ DbSpiderReaderNode
constructor
A new instance of DbSpiderReaderNode.
- #reflection_records(ref) ⇒ Object
- #reflections ⇒ Object
- #reflections_data ⇒ Object
- #traversed! ⇒ Object
- #traversed? ⇒ Boolean
Constructor Details
#initialize(rec, data_columns = nil) ⇒ DbSpiderReaderNode
Returns a new instance of DbSpiderReaderNode.
4 5 6 7 8 9 |
# 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 |
Instance Attribute Details
#rec ⇒ Object (readonly)
Returns the value of attribute rec.
2 3 4 |
# File 'lib/db_facet/db_spider_reader_node.rb', line 2 def rec @rec end |
Instance Method Details
#add_reflection_node(node, ref) ⇒ Object
49 50 51 52 |
# 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 ⇒ Object
62 63 64 65 66 67 68 |
# 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 ⇒ Object
58 59 60 |
# File 'lib/db_facet/db_spider_reader_node.rb', line 58 def data @rec.attributes.slice *@data_columns end |
#data_tree ⇒ Object
23 24 25 26 27 28 29 30 |
# 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) ⇒ Boolean
used by Hash to compare keys
54 55 56 |
# 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) ⇒ Object
11 12 13 |
# File 'lib/db_facet/db_spider_reader_node.rb', line 11 def excl_data_cols excl @data_columns -= [excl] end |
#reflection_records(ref) ⇒ Object
44 45 46 47 |
# 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 ⇒ Object
40 41 42 |
# File 'lib/db_facet/db_spider_reader_node.rb', line 40 def reflections @rec.class.reflections.values end |
#reflections_data ⇒ Object
32 33 34 35 36 37 38 |
# 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! ⇒ Object
19 20 21 |
# File 'lib/db_facet/db_spider_reader_node.rb', line 19 def traversed! @traversed = true end |
#traversed? ⇒ Boolean
15 16 17 |
# File 'lib/db_facet/db_spider_reader_node.rb', line 15 def traversed? @traversed end |