module Globalize::ActiveRecord::AdapterDirty
Attributes
dirty[W]
Public Instance Methods
_reset_attribute(name)
click to toggle source
# File lib/globalize/active_record/adapter_dirty.rb, line 44 def _reset_attribute name record.send("#{name}=", record.changed_attributes[name]) record.send(:clear_attribute_changes, [name]) end
clear_dirty()
click to toggle source
# File lib/globalize/active_record/adapter_dirty.rb, line 40 def clear_dirty self.dirty = {} end
dirty()
click to toggle source
# File lib/globalize/active_record/adapter_dirty.rb, line 27 def dirty @dirty ||= {} end
reset()
click to toggle source
Calls superclass method
# File lib/globalize/active_record/adapter_dirty.rb, line 49 def reset clear_dirty super end
store_old_value(name, locale)
click to toggle source
# File lib/globalize/active_record/adapter_dirty.rb, line 31 def store_old_value name, locale dirty[name] ||= {} unless dirty[name].key? locale old = fetch(locale, name) old = old.dup if old.duplicable? dirty[name][locale] = old end end
write(locale, name, value)
click to toggle source
Calls superclass method
# File lib/globalize/active_record/adapter_dirty.rb, line 4 def write locale, name, value # Dirty tracking, paraphrased from # ActiveRecord::AttributeMethods::Dirty#write_attribute. name = name.to_s store_old_value name, locale old_values = dirty[name] old_value = old_values[locale] is_changed = record.send :attribute_changed?, name if is_changed && value == old_value # If there's already a change, delete it if this undoes the change. old_values.delete locale if old_values.empty? _reset_attribute name end elsif !is_changed # If there's not a change yet, record it. record.send(:attribute_will_change!, name) if old_value != value end super locale, name, value end