Module: DataMapper::UnitOfWork

Included in:
Base
Defined in:
lib/data_mapper/unit_of_work.rb

Overview

Should this track relations?

Instance Method Summary collapse

Instance Method Details

#dirty?(name = nil) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
# File 'lib/data_mapper/unit_of_work.rb', line 10

def dirty?(name = nil)
  if name.nil?
    session.schema[self.class].columns.any? { |column| self.instance_variable_get(column.instance_variable_name).hash != original_hashes[column.name] }
  else
    key = name.kind_of?(Symbol) ? name : name.to_sym
    self.instance_variable_get("@#{name}").hash != original_hashes[key]
  end
end

#dirty_attributesObject



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/data_mapper/unit_of_work.rb', line 19

def dirty_attributes
  if new_record?
    session.schema[self.class].columns.reject do |column|
      instance_variable_get(column.instance_variable_name).nil?
    end
  else        
    session.schema[self.class].columns.select do |column|
      column.name != :id && instance_variable_get(column.instance_variable_name).hash != original_hashes[column.name]
    end
  end.inject({}) do |fields, column|
    fields[column.name] = instance_variable_get(column.instance_variable_name); fields
  end
end

#new_record?Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/data_mapper/unit_of_work.rb', line 6

def new_record?
  @new_record.nil? || @new_record
end

#original_hashesObject



33
34
35
# File 'lib/data_mapper/unit_of_work.rb', line 33

def original_hashes
  @original_hashes || (@original_hashes = {})
end