class MR::Factory::RecordStack
Attributes
factory_config[R]
record_data[R]
record_lookup[R]
record_stacks[R]
Public Class Methods
for_record(record, factory_config)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 9 def self.for_record(record, factory_config) self.new(RecordData.new(record), factory_config) end
new(record_data, factory_config, record_lookup = nil)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 16 def initialize(record_data, factory_config, record_lookup = nil) @record_data = record_data @factory_config = factory_config @record_lookup = record_lookup || build_lookup(@record_data) @record_stacks = @record_data.association_datas.map do |association_data| next unless association_data.required?(factory_config) associated_record_data = association_data.get_record_data( @factory_config, @record_lookup ) associated_factory_config = @factory_config.factory_config_for( association_data.name, associated_record_data.record_class ) @record_lookup[associated_record_data.record_class] ||= associated_record_data @record_data.set_association(association_data.name, associated_record_data) MR::Factory::RecordStack.new( associated_record_data, associated_factory_config, @record_lookup ) end.compact end
Public Instance Methods
create()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 46 def create self.create_dependencies self.record_data.create_record true end
create_dependencies()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 58 def create_dependencies self.record_stacks.each(&:create) self.record_data.refresh_record_associations true end
Also aliased as: create_deps
destroy()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 52 def destroy self.record_data.destroy_record self.destroy_dependencies true end
destroy_dependencies()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 65 def destroy_dependencies self.record_stacks.each(&:destroy) true end
Also aliased as: destroy_deps
record()
click to toggle source
# File lib/mr/factory/record_stack.rb, line 42 def record self.record_data.record end
Private Instance Methods
build_lookup(record_data)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 73 def build_lookup(record_data) load_preset_associations_into_lookup({}, record_data) end
load_preset_associations_into_lookup(lookup, record_data)
click to toggle source
# File lib/mr/factory/record_stack.rb, line 77 def load_preset_associations_into_lookup(lookup, record_data) record_data.association_datas.select(&:preset?).each do |association_data| preset_record_data = association_data.preset_record_data lookup[preset_record_data.record_class] ||= preset_record_data load_preset_associations_into_lookup(lookup, preset_record_data) end lookup end