Module: DataMapper::UnitOfWork
- Included in:
- Base
- Defined in:
- lib/data_mapper/unit_of_work.rb
Overview
Should this track relations?
Instance Method Summary collapse
- #dirty?(name = nil) ⇒ Boolean
- #dirty_attributes ⇒ Object
- #new_record? ⇒ Boolean
- #original_hashes ⇒ Object
Instance Method Details
#dirty?(name = nil) ⇒ 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_attributes ⇒ Object
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
6 7 8 |
# File 'lib/data_mapper/unit_of_work.rb', line 6 def new_record? @new_record.nil? || @new_record end |
#original_hashes ⇒ Object
33 34 35 |
# File 'lib/data_mapper/unit_of_work.rb', line 33 def original_hashes @original_hashes || (@original_hashes = {}) end |