Sha256: 4906fc0989b61a3edcfbdfab2b97b7683792f9ba7d546f4047ae2bda4faa4a86
Contents?: true
Size: 1.76 KB
Versions: 1
Compression:
Stored size: 1.76 KB
Contents
module DataMapper module Resource class PersistenceState # a not-persisted/modifiable resource class Transient < PersistenceState def get(subject, *args) set_default_value(subject) super end def set(subject, value) track(subject) super end def delete self end def commit set_child_keys set_default_values assert_valid_attributes create_resource set_repository add_to_identity_map Clean.new(resource) end def rollback self end def original_attributes @original_attributes ||= {} end private def repository @repository ||= model.repository end def set_default_values (properties | relationships).each do |subject| set_default_value(subject) end end def set_default_value(subject) return if subject.loaded?(resource) || !subject.default? set(subject, subject.default_for(resource)) end def track(subject) original_attributes[subject] = nil end def create_resource repository.create([ resource ]) end def set_repository resource.instance_variable_set(:@_repository, repository) end def assert_valid_attributes properties.each do |property| value = get(property) unless property.serial? && value.nil? property.assert_valid_value(value) end end end end # class Transient end # class PersistenceState end # module Resource end # module DataMapper
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ghost_dm-core-1.3.0.beta | lib/dm-core/resource/persistence_state/transient.rb |