module Intercom::Lib::DynamicAccessors
Public Class Methods
define_accessors(attribute, value, object)
click to toggle source
# File lib/intercom/lib/dynamic_accessors.rb, line 7 def define_accessors(attribute, value, object) klass = object.class if attribute.to_s.end_with?('_at') && attribute.to_s != 'update_last_request_at' define_date_based_accessors(attribute, value, klass) elsif object.flat_store_attribute?(attribute) define_flat_store_based_accessors(attribute, value, klass) else define_standard_accessors(attribute, value, klass) end end
Private Class Methods
define_date_based_accessors(attribute, value, klass)
click to toggle source
# File lib/intercom/lib/dynamic_accessors.rb, line 32 def define_date_based_accessors(attribute, value, klass) klass.class_eval %Q" def #{attribute}=(value) mark_field_as_changed!(:#{attribute}) @#{attribute} = value.nil? ? nil : value.to_i end def #{attribute} @#{attribute}.nil? ? nil : Time.at(@#{attribute}) end " end
define_flat_store_based_accessors(attribute, value, klass)
click to toggle source
# File lib/intercom/lib/dynamic_accessors.rb, line 20 def define_flat_store_based_accessors(attribute, value, klass) klass.class_eval %Q" def #{attribute}=(value) mark_field_as_changed!(:#{attribute}) @#{attribute} = Intercom::Lib::FlatStore.new(value) end def #{attribute} @#{attribute} end " end
define_standard_accessors(attribute, value, klass)
click to toggle source
# File lib/intercom/lib/dynamic_accessors.rb, line 44 def define_standard_accessors(attribute, value, klass) klass.class_eval %Q" def #{attribute}=(value) mark_field_as_changed!(:#{attribute}) @#{attribute} = value end def #{attribute} @#{attribute} end " end