Class Index [+]

Quicksearch

DataMapper::Resource::PersistenceState::Dirty

a persisted/dirty resource

Public Instance Methods

commit() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 18
18:         def commit
19:           remove_from_identity_map
20:           set_child_keys
21:           return self unless valid_attributes?
22:           update_resource
23:           reset_original_attributes
24:           reset_resource_key
25:           Clean.new(resource)
26:         ensure
27:           add_to_identity_map
28:         end
delete() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 13
13:         def delete
14:           reset_resource
15:           Deleted.new(resource)
16:         end
original_attributes() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 35
35:         def original_attributes
36:           @original_attributes ||= {}
37:         end
rollback() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 30
30:         def rollback
31:           reset_resource
32:           Clean.new(resource)
33:         end
set(subject, value) click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 7
 7:         def set(subject, value)
 8:           track(subject, value)
 9:           super
10:           original_attributes.empty? ? Clean.new(resource) : self
11:         end

Private Instance Methods

reset_original_attributes() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 82
82:         def reset_original_attributes
83:           original_attributes.clear
84:         end
reset_resource() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 57
57:         def reset_resource
58:           reset_resource_properties
59:           reset_resource_relationships
60:         end
reset_resource_key() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 62
62:         def reset_resource_key
63:           resource.instance_eval { remove_instance_variable(:@_key) }
64:         end
reset_resource_properties() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 66
66:         def reset_resource_properties
67:           # delete every original attribute after resetting the resource
68:           original_attributes.delete_if do |property, value|
69:             property.set!(resource, value)
70:             true
71:           end
72:         end
reset_resource_relationships() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 74
74:         def reset_resource_relationships
75:           relationships.each do |relationship|
76:             next unless relationship.loaded?(resource)
77:             # TODO: consider a method in Relationship that can reset the relationship
78:             resource.instance_eval { remove_instance_variable(relationship.instance_variable_name) }
79:           end
80:         end
track(subject, value) click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 41
41:         def track(subject, value)
42:           if original_attributes.key?(subject)
43:             # stop tracking if the new value is the same as the original
44:             if original_attributes[subject].eql?(value)
45:               original_attributes.delete(subject)
46:             end
47:           elsif !value.eql?(original = get(subject))
48:             # track the original value
49:             original_attributes[subject] = original
50:           end
51:         end
update_resource() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 53
53:         def update_resource
54:           repository.update(resource.dirty_attributes, collection_for_self)
55:         end
valid_attributes?() click to toggle source
    # File lib/dm-core/resource/persistence_state/dirty.rb, line 86
86:         def valid_attributes?
87:           original_attributes.each_key do |property|
88:             return false if property.kind_of?(Property) && !property.valid?(property.get!(resource))
89:           end
90:           true
91:         end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.