class Virtus::DirtyAttribute::Session
Attributes
subject[R]
Public Class Methods
new(subject)
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 7 def initialize(subject) @subject = subject end
Public Instance Methods
attribute_clean!(name)
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 23 def attribute_clean!(name) dirty_attributes.delete name original_attributes.delete name end
clean!()
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 32 def clean! original_attributes.clear dirty_attributes.clear end
dirty!(name, value)
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 19 def dirty!(name, value) dirty_attributes[name] = value end
dirty?(name = nil)
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 28 def dirty?(name = nil) name ? dirty_attributes.key?(name) : dirty_attributes.any? end
dirty_attributes()
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 15 def dirty_attributes @_dirty_attributes ||= {} end
original_attributes()
click to toggle source
# File lib/virtus/dirty_attribute/session.rb, line 11 def original_attributes @_original_attributes ||= get_original_attributes(subject).dup end
Private Instance Methods
get_original_attributes(subject)
click to toggle source
Get the original values from the instance variable directly and not the possibly overridden accessor.
This allows for accessors that are created to provide lazy loading of external resources.
Whenever something is loaded from the server is should be marked clean.
# File lib/virtus/dirty_attribute/session.rb, line 46 def get_original_attributes(subject) subject.class.attribute_set.each_with_object({}) do |attribute, attributes| name = attribute.name attributes[name] = subject.instance_variable_get("@#{name}") end end