module Intercom::Traits::DirtyTracking

Public Instance Methods

field_changed?(field_name) click to toggle source
# File lib/intercom/traits/dirty_tracking.rb, line 23
def field_changed?(field_name)
  @changed_fields ||= Set.new
  field = instance_variable_get("@#{field_name}")
  if field.respond_to?(:field_changed?)
    field.to_hash.any? do |attribute, _|
      field.field_changed?(attribute)
    end
  else
    @changed_fields.include?(field_name.to_s)
  end
end
instance_variables_excluding_dirty_tracking_field() click to toggle source
# File lib/intercom/traits/dirty_tracking.rb, line 35
def instance_variables_excluding_dirty_tracking_field
  instance_variables.reject{|var| var == :@changed_fields}
end
mark_field_as_changed!(field_name) click to toggle source
# File lib/intercom/traits/dirty_tracking.rb, line 18
def mark_field_as_changed!(field_name)
  @changed_fields ||= Set.new
  @changed_fields.add(field_name.to_s)
end
mark_fields_as_changed!(field_names) click to toggle source
# File lib/intercom/traits/dirty_tracking.rb, line 11
def mark_fields_as_changed!(field_names)
  @changed_fields ||= Set.new
  field_names.each do |attr|
    @changed_fields.add(attr.to_s)
  end
end
reset_changed_fields!() click to toggle source
# File lib/intercom/traits/dirty_tracking.rb, line 7
def reset_changed_fields!
  @changed_fields = Set.new
end