class SampleModels::Creation::SpecifiedAttributes
Attributes
result[R]
Public Class Methods
new(sampler, *args)
click to toggle source
# File lib/sample_models/creation.rb, line 112 def initialize(sampler, *args) @sampler = sampler @result = if args.first.is_a?(Symbol) sample_name = args.shift @sampler.named_samples[sample_name].clone else {} end @result.merge!(args.pop) if args.last.is_a?(Hash) args.each do |associated_value| assign_associated_record_from_args(associated_value) end model.belongs_to_associations.each do |assoc| build_belongs_to_record_from_shortcut_args(assoc) end model.has_many_associations.each do |assoc| build_has_many_record_from_shortcut_args(assoc) end @result = HashWithIndifferentAccess.new(@result) end
Public Instance Methods
assign_associated_record_from_args(associated_value)
click to toggle source
# File lib/sample_models/creation.rb, line 133 def assign_associated_record_from_args(associated_value) assocs = model.associations.select { |a| begin a.klass == associated_value.class rescue NameError false end } if assocs.size == 1 @result[assocs.first.name] = associated_value else raise "Not sure what to do with associated value #{associated_value.inspect}" end end
build_belongs_to_record_from_shortcut_args(assoc)
click to toggle source
# File lib/sample_models/creation.rb, line 148 def build_belongs_to_record_from_shortcut_args(assoc) if value = @result[assoc.name] if value.is_a?(Hash) @result[assoc.name] = assoc.klass.sample(value) elsif value.is_a?(Array) @result[assoc.name] = assoc.klass.sample(*value) end end end
build_has_many_record_from_shortcut_args(assoc)
click to toggle source
# File lib/sample_models/creation.rb, line 158 def build_has_many_record_from_shortcut_args(assoc) if values = @result[assoc.name] @result[assoc.name] = values.map { |value| value.is_a?(Hash) ? assoc.klass.sample(value) : value } end end
model()
click to toggle source
# File lib/sample_models/creation.rb, line 166 def model @sampler.model end