From a85018a38f88112c16c4832e3a3aaa7b9e360478 Mon Sep 17 00:00:00 2001 From: James Haig Date: Tue, 23 Apr 2024 16:41:21 -0400 Subject: [PATCH] don't check syncable attributes unless we're going to update them in salesforce --- lib/salesforce_ar_sync/salesforce_sync.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/salesforce_ar_sync/salesforce_sync.rb b/lib/salesforce_ar_sync/salesforce_sync.rb index ef07c2f..a3008b2 100644 --- a/lib/salesforce_ar_sync/salesforce_sync.rb +++ b/lib/salesforce_ar_sync/salesforce_sync.rb @@ -164,13 +164,15 @@ def salesforce_should_update_attribute?(attribute) def salesforce_attributes_to_update(include_all = false) {}.tap do |hash| self.class.salesforce_sync_attribute_mapping.each do |key, value| - next unless respond_to?(value) + next if !respond_to?(value) || + self.class.readonly_fields&.include?(key.to_sym) || + (!include_all && !salesforce_should_update_attribute?(value)) # Checkboxes in SFDC Cannot be nil. Here we check for boolean field type and set nil values to be false attribute_value = send(value) attribute_value = false if is_boolean?(value) && attribute_value.nil? - hash[key] = attribute_value if !self.class.readonly_fields&.include?(key.to_sym) && (include_all || salesforce_should_update_attribute?(value)) + hash[key] = attribute_value end end end