From 505fa9f1cf80dba5cabf1c9dbc30266cce4326c6 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Thu, 15 Jan 2015 15:31:31 -0500 Subject: [PATCH] FIX: :bug: Saving the same custom field array twice would raise an error --- app/models/concerns/has_custom_fields.rb | 2 +- spec/components/concern/has_custom_fields_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/has_custom_fields.rb b/app/models/concerns/has_custom_fields.rb index cfe0db59040..854dee20ef9 100644 --- a/app/models/concerns/has_custom_fields.rb +++ b/app/models/concerns/has_custom_fields.rb @@ -117,7 +117,7 @@ module HasCustomFields array_fields.each do |field_name, fields| if fields.length == dup[field_name].length && fields.map{|f| f.value} == dup[field_name] - dup.delete(f.name) + dup.delete(field_name) else fields.each{|f| f.destroy } end diff --git a/spec/components/concern/has_custom_fields_spec.rb b/spec/components/concern/has_custom_fields_spec.rb index 9776762a6f9..aa36db51099 100644 --- a/spec/components/concern/has_custom_fields_spec.rb +++ b/spec/components/concern/has_custom_fields_spec.rb @@ -115,6 +115,14 @@ describe HasCustomFields do db_item.save expect(db_item.custom_fields).to eq({"a" => ["c", "d"]}) + # It can be updated to the exact same value + db_item.custom_fields.update('a' => ['c']) + db_item.save + expect(db_item.custom_fields).to eq({"a" => "c"}) + db_item.custom_fields.update('a' => ['c']) + db_item.save + expect(db_item.custom_fields).to eq({"a" => "c"}) + db_item.custom_fields.delete('a') expect(db_item.custom_fields).to eq({})