Module: Draisine::ActiveRecordPlugin
Defined Under Namespace
Modules: ClassMethods
Instance Attribute Summary collapse
Instance Method Summary
collapse
#salesforce_update_without_sync
#salesforce_assign_attributes, #salesforce_attributes, #salesforce_mapped_attributes, #salesforce_reverse_mapped_attributes
Instance Attribute Details
#salesforce_skip_sync ⇒ Object
Returns the value of attribute salesforce_skip_sync.
92
93
94
|
# File 'lib/draisine/active_record.rb', line 92
def salesforce_skip_sync
@salesforce_skip_sync
end
|
Instance Method Details
#salesforce_callback(type, options = {}) ⇒ Object
165
166
167
168
169
170
|
# File 'lib/draisine/active_record.rb', line 165
def salesforce_callback(type, options = {})
self.class.salesforce_callback(type, salesforce_id, {
local_record_type: self.class.name,
local_record_id: id
}.merge(options))
end
|
#salesforce_inbound_update(attributes, add_blanks = true) ⇒ Object
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/draisine/active_record.rb', line 100
def salesforce_inbound_update(attributes, add_blanks = true)
return unless should_process_inbound_update?(attributes)
self.salesforce_skip_sync = true
if add_blanks
attributes = self.class.salesforce_synced_attributes
.map {|attr| [attr, attributes[attr]] }
.to_h
end
salesforce_assign_attributes(attributes)
salesforce_callback(persisted? ? :inbound_update : :inbound_create, attributes: attributes)
save!
end
|
#salesforce_on_create ⇒ Object
113
114
115
116
117
|
# File 'lib/draisine/active_record.rb', line 113
def salesforce_on_create
if !salesforce_skip_sync && self.class.salesforce_outbound_create?
self.class.salesforce_enqueue_or_run(OutboundCreateJob, self)
end
end
|
#salesforce_on_delete ⇒ Object
146
147
148
149
150
|
# File 'lib/draisine/active_record.rb', line 146
def salesforce_on_delete
if !salesforce_skip_sync && self.class.salesforce_outbound_delete?
self.class.salesforce_enqueue_or_run(OutboundDeleteJob, self)
end
end
|
#salesforce_on_update ⇒ Object
127
128
129
130
131
132
133
134
135
|
# File 'lib/draisine/active_record.rb', line 127
def salesforce_on_update
if !salesforce_skip_sync && self.class.salesforce_outbound_update?
self.class.salesforce_enqueue_or_run(
OutboundUpdateJob,
self,
salesforce_attributes.slice(*changed)
)
end
end
|
#salesforce_outbound_create ⇒ Object
119
120
121
122
123
124
125
|
# File 'lib/draisine/active_record.rb', line 119
def salesforce_outbound_create
attrs = salesforce_attributes.compact
response = salesforce_syncer.create(attrs)
self.salesforce_id = response.fetch('id')
salesforce_skipping_sync { save! } if persisted?
salesforce_callback(:outbound_create, attributes: attrs)
end
|
#salesforce_outbound_delete ⇒ Object
152
153
154
155
|
# File 'lib/draisine/active_record.rb', line 152
def salesforce_outbound_delete
salesforce_syncer.delete(salesforce_id)
salesforce_callback(:outbound_delete)
end
|
#salesforce_outbound_update(updated_attributes) ⇒ Object
137
138
139
140
141
142
143
144
|
# File 'lib/draisine/active_record.rb', line 137
def salesforce_outbound_update(updated_attributes)
self.class.transaction do
salesforce_syncer.update(salesforce_id, updated_attributes)
timestamp = salesforce_syncer.get_system_modstamp(salesforce_id)
update_column(:salesforce_updated_at, timestamp)
salesforce_callback(:outbound_update, attributes: updated_attributes)
end
end
|
#salesforce_skipping_sync(&block) ⇒ Object
157
158
159
160
161
162
163
|
# File 'lib/draisine/active_record.rb', line 157
def salesforce_skipping_sync(&block)
old_sync = self.salesforce_skip_sync
self.salesforce_skip_sync = true
instance_eval(&block)
ensure
self.salesforce_skip_sync = old_sync
end
|