class CSVStepImporter::Node
Attributes
children[RW]
env[RW]
parent[RW]
Public Class Methods
new(parent: nil, children: [], env: nil)
click to toggle source
Calls superclass method
# File lib/csv_step_importer/node.rb, line 15 def initialize(parent: nil, children: [], env: nil) super() self.env = build_env(env) if env self.parent = parent self.children = children end
Public Instance Methods
add_children(children, prepend: false)
click to toggle source
# File lib/csv_step_importer/node.rb, line 37 def add_children(children, prepend: false) children = Array(children) unless children.is_a?(Enumerable) children = children.collect do |child, sub_children| next child unless child.is_a?(Class) child.new parent: self, children: sub_children end.compact @children = prepend ? children + @children : @children + children end
build_env(env)
click to toggle source
# File lib/csv_step_importer/node.rb, line 23 def build_env(env) Struct.new(*env.keys).new(*env.values).freeze end
children=(children)
click to toggle source
childrenはHash型またはArray型です
# File lib/csv_step_importer/node.rb, line 32 def children=(children) @children = [] add_children children end
create_or_update()
click to toggle source
# File lib/csv_step_importer/node.rb, line 48 def create_or_update children.empty? || children.all?(&:save) end
run_validations!()
click to toggle source
NOTE: the native after_validation seems not be able to influence the return value of run_validations! However, children should only be validated if the parent is valid
Calls superclass method
# File lib/csv_step_importer/node.rb, line 54 def run_validations! super errors.empty? end
validate_children()
click to toggle source
# File lib/csv_step_importer/node.rb, line 59 def validate_children return unless errors.empty? children.each do |child| next if child.valid? child.errors.each do |key, message| errors[key] << message end end end