Module: Draisine::ActiveRecordPlugin::ClassMethods

Defined in:
lib/draisine/active_record.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#salesforce_audited_attributesObject

Returns the value of attribute salesforce_audited_attributes.



35
36
37
# File 'lib/draisine/active_record.rb', line 35

def salesforce_audited_attributes
  @salesforce_audited_attributes
end

#salesforce_object_nameObject

Returns the value of attribute salesforce_object_name.



34
35
36
# File 'lib/draisine/active_record.rb', line 34

def salesforce_object_name
  @salesforce_object_name
end

#salesforce_opsObject

Returns the value of attribute salesforce_ops.



36
37
38
# File 'lib/draisine/active_record.rb', line 36

def salesforce_ops
  @salesforce_ops
end

#salesforce_sync_modeObject

Returns the value of attribute salesforce_sync_mode.



37
38
39
# File 'lib/draisine/active_record.rb', line 37

def salesforce_sync_mode
  @salesforce_sync_mode
end

Instance Method Details

#salesforce_callback(type, salesforce_id, options = {}) ⇒ Object



87
88
89
# File 'lib/draisine/active_record.rb', line 87

def salesforce_callback(type, salesforce_id, options = {})
  Draisine.sync_callback.call(type, salesforce_id, options)
end

#salesforce_enqueue_or_run(job_class, *args, &block) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/draisine/active_record.rb', line 45

def salesforce_enqueue_or_run(job_class, *args, &block)
  if salesforce_sync_mode
    job_class.perform_now(*args, &block)
  else
    job_class.perform_later(*args, &block)
  end
end

#salesforce_inbound_delete(salesforce_id) ⇒ Object



72
73
74
75
76
77
78
79
80
81
# File 'lib/draisine/active_record.rb', line 72

def salesforce_inbound_delete(salesforce_id)
  if salesforce_inbound_delete?
    record = find_by(salesforce_id: salesforce_id)
    if record
      record.salesforce_skip_sync = true
      record.destroy
      salesforce_callback(:inbound_delete, salesforce_id)
    end
  end
end

#salesforce_inbound_update(attributes, add_blanks = true) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'lib/draisine/active_record.rb', line 57

def salesforce_inbound_update(attributes, add_blanks = true)
  if salesforce_inbound_update?
    attributes = attributes.with_indifferent_access
    id = attributes.fetch('Id')
    (find_by(salesforce_id: id) || new).tap do |m|
      m.salesforce_id = id
      m.salesforce_inbound_update(attributes, add_blanks)
    end
  end
end

#salesforce_on_inbound_delete(salesforce_id) ⇒ Object



68
69
70
# File 'lib/draisine/active_record.rb', line 68

def salesforce_on_inbound_delete(salesforce_id)
  salesforce_enqueue_or_run(InboundDeleteJob, self.name, salesforce_id)
end

#salesforce_on_inbound_update(attributes) ⇒ Object



53
54
55
# File 'lib/draisine/active_record.rb', line 53

def salesforce_on_inbound_update(attributes)
  salesforce_enqueue_or_run(InboundUpdateJob, self.name, attributes)
end

#salesforce_syncerObject



83
84
85
# File 'lib/draisine/active_record.rb', line 83

def salesforce_syncer
  @salesforce_syncer || Syncer.new(salesforce_object_name)
end