Sha256: f1f6156472e3be04337f1cd26d04bd919b96958f7027aea52b60ad13b3123153

Contents?: true

Size: 948 Bytes

Versions: 10

Compression:

Stored size: 948 Bytes

Contents

module DataMapper
  module Resource
    class State

      # a persisted/unmodified resource
      class Clean < Persisted
        def set(subject, value)
          if not_modified?(subject, value)
            self
          else
            # assign to persisted_state so that if Dirty#set calls
            # a Relationship#set, which modifies a Property, the same
            # Dirty state instance will be reused.
            state = resource.persisted_state = Dirty.new(resource)
            state.set(subject, value)
          end
        end

        def delete
          Deleted.new(resource)
        end

        def commit
          self
        end

        def rollback
          self
        end

      private

        def not_modified?(subject, value)
          subject.loaded?(resource) && subject.get!(resource).eql?(value)
        end

      end # class Clean
    end # class State
  end # module Resource
end # module DataMapper

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
dm-core-1.1.0 lib/dm-core/resource/state/clean.rb
dm-core-1.1.0.rc3 lib/dm-core/resource/state/clean.rb
dm-core-1.1.0.rc2 lib/dm-core/resource/state/clean.rb
dm-core-1.1.0.rc1 lib/dm-core/resource/state/clean.rb
dm-core-1.0.2 lib/dm-core/resource/state/clean.rb
dm-core-1.0.1 lib/dm-core/resource/state/clean.rb
dm-core-1.0.0 lib/dm-core/resource/state/clean.rb
dm-core-1.0.0.rc3 lib/dm-core/resource/state/clean.rb
dm-core-1.0.0.rc2 lib/dm-core/resource/state/clean.rb
dm-core-1.0.0.rc1 lib/dm-core/resource/state/clean.rb