Sha256: 075222069f96314898512ab804771dcdec746c18dd5d84949d1bfc2cef697168

Contents?: true

Size: 974 Bytes

Versions: 7

Compression:

Stored size: 974 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 # class Clean
    end # class PersistenceState
  end # module Resource
end # module DataMapper

Version data entries

7 entries across 7 versions & 3 rubygems

Version Path
ardm-core-1.3.0 lib/dm-core/resource/persistence_state/clean.rb
ardm-core-1.2.1 lib/dm-core/resource/persistence_state/clean.rb
dm-core-1.2.1 lib/dm-core/resource/persistence_state/clean.rb
ghost_dm-core-1.3.0.beta lib/dm-core/resource/persistence_state/clean.rb
dm-core-1.2.0 lib/dm-core/resource/persistence_state/clean.rb
dm-core-1.2.0.rc2 lib/dm-core/resource/persistence_state/clean.rb
dm-core-1.2.0.rc1 lib/dm-core/resource/persistence_state/clean.rb