Sha256: e4bfd597b309b861ab91c5b7081c2a93c0148ad64641f6b2b601b11d26ef5314

Contents?: true

Size: 888 Bytes

Versions: 4

Compression:

Stored size: 888 Bytes

Contents

module DataMapper
  module Resource
    class PersistenceState
      # a persisted/unmodified resource
      class Clean < Persisted
        def set(subject, value)
          if not_modified?(subject, value)
            self
          else
            # assign to persistence_state so that if Dirty#set calls
            # a Relationship#set, which modifies a Property, the same
            # Dirty state instance will be reused.
            state = resource.persistence_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
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sbf-dm-core-1.5.0 lib/dm-core/resource/persistence_state/clean.rb
sbf-dm-core-1.4.0 lib/dm-core/resource/persistence_state/clean.rb
sbf-dm-core-1.3.0 lib/dm-core/resource/persistence_state/clean.rb
sbf-dm-core-1.3.0.beta lib/dm-core/resource/persistence_state/clean.rb