Class: DbSpiderWriterNode

Inherits:
Object
  • Object
show all
Defined in:
lib/db_facet/db_spider_writer_node.rb

Instance Method Summary collapse

Constructor Details

#initialize(reader_node) ⇒ DbSpiderWriterNode

Returns a new instance of DbSpiderWriterNode.



3
4
5
# File 'lib/db_facet/db_spider_writer_node.rb', line 3

def initialize reader_node
  @r_node = reader_node
end

Instance Method Details

#dataObject



37
38
39
# File 'lib/db_facet/db_spider_writer_node.rb', line 37

def data
  @r_node[:data]
end

#idObject



11
12
13
# File 'lib/db_facet/db_spider_writer_node.rb', line 11

def id
  data[pk]
end

#id=(v) ⇒ Object



7
8
9
# File 'lib/db_facet/db_spider_writer_node.rb', line 7

def id=(v)
  data[pk] = v
end

#insert_dataObject



41
42
43
# File 'lib/db_facet/db_spider_writer_node.rb', line 41

def insert_data
  data.slice *model.column_names
end

#modelObject



15
16
17
# File 'lib/db_facet/db_spider_writer_node.rb', line 15

def model
  @model ||= @r_node[:class_name].constantize
end

#pkObject



19
20
21
# File 'lib/db_facet/db_spider_writer_node.rb', line 19

def pk
  model.primary_key
end

#reflection_nodesObject



27
28
29
30
31
32
33
34
35
# File 'lib/db_facet/db_spider_writer_node.rb', line 27

def reflection_nodes
  rn = {}
  reflections.each_pair do |ref_name, reader_nodes|
    rn[model.reflections[ref_name]] = reader_nodes.map{|reader_node|
      DbSpiderWriterNode.new reader_node
    }
  end
  rn
end

#reflectionsObject



23
24
25
# File 'lib/db_facet/db_spider_writer_node.rb', line 23

def reflections
  @r_node[:reflections]
end

#t_colsObject



60
61
62
# File 'lib/db_facet/db_spider_writer_node.rb', line 60

def t_cols
  @t_cols ||= model.translated_attribute_names.map &:to_s
end

#t_dataObject



45
46
47
48
49
50
# File 'lib/db_facet/db_spider_writer_node.rb', line 45

def t_data
  data.slice(*t_cols).merge(
    locale: 'pt-BR',
    t_fk => id
  )
end

#t_fkObject



52
53
54
# File 'lib/db_facet/db_spider_writer_node.rb', line 52

def t_fk
  @t_fk ||= t_model.reflections[:globalized_model].foreign_key
end

#t_modelObject



56
57
58
# File 'lib/db_facet/db_spider_writer_node.rb', line 56

def t_model
  @t_model ||= model.translation_class
end

#update_columns(atts) ⇒ Object



64
65
66
67
# File 'lib/db_facet/db_spider_writer_node.rb', line 64

def update_columns atts
  raise "Trying to update record without primary key: #{model} #{atts}" if id.blank?
  model.where(id: id).update_columns atts
end