lib/mass_insert/base.rb in mass_insert-0.0.1 vs lib/mass_insert/base.rb in mass_insert-0.0.2

- old
+ new

@@ -3,41 +3,64 @@ # This method do a mass database insertion. Example... # # User.mass_insert(values) # - # The values should be an array with the object values - # in a hash. Example... + # The values should be an array with the object values in a hash. + # Example... # # values = [ # {:name => "user name", :email => "user email"}, # {:name => "user name", :email => "user email"}, # {:name => "user name", :email => "user email"} # ] # + # When a class that inherit from ActiveRecord::Base calls this method + # is going to extend the methods in ClassMethods module. This module + # contains some methods that provides some necessary functionality. + # + # After extends the class with methods in ClassMethods module. The + # options that were passed by params are sanitized in the method + # called mass_insert_options_sanitized to be passed by params to + # do ProcessControl instance. The values are passed too. def mass_insert values, args = {} + class_eval do + extend ClassMethods + end + options = mass_insert_options(args) - process = MassInsert::ProcessControl.new(values, options) - process.execute + @mass_insert_process = MassInsert::ProcessControl.new(values, options) + @mass_insert_process.start end - private - def mass_insert_options args = {} - # prepare default options that come in the class that invokes the - # mass_insert function. - args[:class_name] ||= self - args[:table_name] ||= self.table_name + module ClassMethods + # Returns an OpenStruc instance where is possible to see the + # results of MassInsert process. This method calls results method + # in ProcessControl class. Returns nil if there is not a instance + # variable with the MassInset process. + def mass_insert_results + @mass_insert_process.results if @mass_insert_process + end - # prepare attributes options that were configured by the user and - # if the options weren't passed, they would be initialized with the - # default values. - args[:primary_key] ||= :id - args[:primary_key_mode] ||= :auto + private - # Returns the arguments but sanitized and ready to be used. This - # args will be passed by params to ProcessControl class. - args - end + def mass_insert_options args = {} + # prepare default options that come in the class that invokes the + # mass_insert function. + args[:class_name] ||= self + args[:table_name] ||= self.table_name + # prepare attributes options that were configured by the user and + # if the options weren't passed, they would be initialized with the + # default values. + args[:primary_key] ||= :id + args[:primary_key_mode] ||= :auto + + # Returns the arguments but sanitized and ready to be used. This + # args will be passed by params to ProcessControl class. + args + end + + end end end