4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/salesforce_ar_sync/extenders/salesforce_syncable.rb', line 4
def salesforce_syncable(options = {})
require 'salesforce_ar_sync/salesforce_sync'
include SalesforceArSync::SalesforceSync
self.salesforce_sync_enabled = options.has_key?(:salesforce_sync_enabled) ? options[:salesforce_sync_enabled] : true
self.salesforce_sync_attribute_mapping = options.has_key?(:sync_attributes) ? options[:sync_attributes].stringify_keys : {}
self.salesforce_async_attributes = options.has_key?(:async_attributes) ? options[:async_attributes] : {}
self.salesforce_default_attributes_for_create = options.has_key?(:default_attributes_for_create) ? options[:default_attributes_for_create] : {}
self.salesforce_id_attribute_name = options.has_key?(:salesforce_id_attribute_name) ? options[:salesforce_id_attribute_name] : :Id
self.salesforce_web_id_attribute_name = options.has_key?(:web_id_attribute_name) ? options[:web_id_attribute_name] : :WebId__c
self.salesforce_sync_web_id = options.has_key?(:salesforce_sync_web_id) ? options[:salesforce_sync_web_id] : false
self.salesforce_web_class_name = options.has_key?(:web_class_name) ? options[:web_class_name] : self.name
self.salesforce_object_name_method = options.has_key?(:salesforce_object_name) ? options[:salesforce_object_name] : nil
self.salesforce_object_method = options.has_key?(:salesforce_object) ? options[:salesforce_object] : nil
self.salesforce_skip_sync_method = options.has_key?(:except) ? options[:except] : nil
instance_eval do
before_save :salesforce_sync
after_create :sync_web_id
def salesforce_sync_web_id?
self.salesforce_sync_web_id
end
end
class_eval do
def salesforce_object_name
return send(self.class.salesforce_object_name_method) if self.class.salesforce_object_name_method.present?
return self.class.name
end
def salesforce_object
return send(self.class.salesforce_object_method) if self.class.salesforce_object_method.present?
return send(:salesforce_object_default)
end
def salesforce_skip_sync?
return true if SalesforceArSync.config["SYNC_ENABLED"] == false
return (salesforce_skip_sync || !self.class.salesforce_sync_enabled || send(self.class.salesforce_skip_sync_method)) if self.class.salesforce_skip_sync_method.present?
return (salesforce_skip_sync || !self.class.salesforce_sync_enabled)
end
end
end
|