Sha256: 0fed8cabd7a864f83fe69be9802b76043de6bd09e3fa62c6c8e2d266d39723e0

Contents?: true

Size: 592 Bytes

Versions: 7

Compression:

Stored size: 592 Bytes

Contents

module Memento
  class Action::Destroy < Memento::Action::Base

    def fetch
      record.attributes_for_memento
    end

    def undo
      rebuild_object do |object|
        begin
          object.save!
        rescue
          object.id = nil
          object.save!
        end
        state.record = object
        state.save
      end
    end

    private

    def rebuild_object
      new_object do |object|
        state.record_data.each do |attribute, value|
          object.send(:"#{attribute}=", value)
        end
        yield(object) if block_given?
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
memento-0.5.2 lib/memento/action/destroy.rb
memento-0.5.1 lib/memento/action/destroy.rb
memento-0.5.0 lib/memento/action/destroy.rb
memento-0.4.3 lib/memento/action/destroy.rb
memento-0.4.2 lib/memento/action/destroy.rb
memento-0.4.1 lib/memento/action/destroy.rb
memento-0.4.0 lib/memento/action/destroy.rb