Sha256: c84137f5e0949c795c94c28dd10ee5f29bcd9a28cb4f81545f721d3234a1f092
Contents?: true
Size: 1.69 KB
Versions: 8
Compression:
Stored size: 1.69 KB
Contents
module DataMapper module Resource class State # a not-persisted/modifiable resource class Transient < State 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 return self unless 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 valid_attributes? properties.all? do |property| value = get(property) property.serial? && value.nil? || property.valid?(value) end end end # class Transient end # class State end # module Resource end # module DataMapper
Version data entries
8 entries across 8 versions & 1 rubygems