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