Sha256: 325086d9d6c7c066a7c7d5abc9bb308cd7cefe0c9b5ac3c4230a75ce57ed3e41

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

# Copyright:: (c) Autotelik Media Ltd 2015
# Author ::   Tom Statter
# Date ::     March 2015
# License::   MI
#
# Details::   Manage the current loader object
#
#
module DataShift

  class LoadObject < SimpleDelegator

    attr_accessor :instance

    def initialize(current_object)
      super
      @instance = current_object
    end

    # delegate :errors, to: :instance

    # This method usually called during processing to avoid errors with associations like
    #   <ActiveRecord::RecordNotSaved: You cannot call create unless the parent is saved>
    # If the object is still invalid at this point probably indicates compulsory
    # columns on model have not been processed before associations on that model
    #
    def save_if_new
      return false unless instance && instance.new_record?

      return instance.save if instance.valid?

      raise SaveError, "Cannot Save #{instance.class} : #{instance.errors.full_messages.inspect}"
    end

    private

=begin
    def method_missing(method, *args, &block)
      raise "Cannot call [#{method}] on : #{instance.class.name}"
      if instance.respond_to? method
        instance.send(method, *args, &block)
      else
        raise "Cannot call [#{method}] on : #{instance.class.name}"
      end
    end
=end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
datashift-0.40.4 lib/datashift/load_object.rb
datashift-0.40.3 lib/datashift/load_object.rb
datashift-0.40.1 lib/datashift/load_object.rb