class DataWorks::Grafter::ModelCreator

Public Class Methods

new(works, model_name, model_attrs) click to toggle source
# File lib/data_works/grafter.rb, line 5
def initialize(works, model_name, model_attrs)
  @works = works
  @model_name = model_name.to_sym
  @model_attrs = model_attrs
  @parent_creator = ParentCreator.new(@works, @model_name, @model_attrs)
end

Public Instance Methods

create_model_and_its_necessary_parents() click to toggle source
# File lib/data_works/grafter.rb, line 12
def create_model_and_its_necessary_parents
  created_parents = @parent_creator.create_necessary_parents(parents_we_already_have)
  FactoryGirl.create(@model_name, @model_attrs.merge(created_parents))
end

Private Instance Methods

parents_we_already_have() click to toggle source

If we use DataWorks like this:

data.add_student(:school => some_school)

then we are passing in a necessary parent model (the school), so DataWorks does not have to autogenerate it, since we already have it.

# File lib/data_works/grafter.rb, line 23
def parents_we_already_have
  provided_attribute_names = @model_attrs.keys
  necessary_parent_names = Relationships.necessary_parents_for(@model_name).map(&:association_name)
  provided_attribute_names & necessary_parent_names
end