jsonb_accessor 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0206aa16a6170326c1c5683a894715d6466cce4fb4b53f0bbd4326619608aed
4
- data.tar.gz: e806fe994b60d0e9a4f8d46bda8df39a44266292010f2b4706bd2be3dfe46d44
3
+ metadata.gz: 5b446e2b5fcf294a928c055c00334951830d068f7161437ec8fcab443cf2cee5
4
+ data.tar.gz: 443355750846f163a89307f662cd06d5034b5b922e7305209e8101b879f75b3e
5
5
  SHA512:
6
- metadata.gz: 443182674b5fd917ea91c8a7813756e43b85678343833845db054a4814ccbb9e20598794c2ee44ad44715258a5e957a1fe2cbcdbf2758b2a01200adf266c7381
7
- data.tar.gz: 7f604bebd874c410c78e554c4e724f18d0c816fe035ebc1d8e470cede3d8d3497f9443a4a25a4d611f0395eb5215063e211aada8ef9d8df8e4ee7502b352eb81
6
+ metadata.gz: 98019ca7f52229b5ca88a11b29ece4919bdd308a4c101dbc3a1b53ffa9d783ab90d9c09219be7ff7de37641a4545593851ed60da69cfc57dd53dfe6b7ee04238
7
+ data.tar.gz: 0e7b87df70bc3fdd71f4e384857970863b89bf60931c623b15b0983e554875cc1581672977bb274f0104fb393052d81447e05db4759826f83255d8cf03f355bd
@@ -71,17 +71,26 @@ module JsonbAccessor
71
71
  end
72
72
 
73
73
  # Overrides the jsonb attribute setter to make sure the jsonb fields are kept in sync.
74
- define_method("#{jsonb_attribute}=") do |given_value|
75
- value = given_value || {}
74
+ define_method("#{jsonb_attribute}=") do |value|
75
+ value ||= {}
76
76
  names_to_store_keys = self.class.public_send(store_key_mapping_method_name)
77
+ store_keys_to_names = names_to_store_keys.invert
77
78
 
78
- empty_store_key_attributes = names_to_store_keys.values.each_with_object({}) { |name, defaults| defaults[name] = nil }
79
- empty_named_attributes = names_to_store_keys.keys.each_with_object({}) { |name, defaults| defaults[name] = nil }
79
+ # this is the raw hash we want to save in the jsonb_attribute
80
+ value_with_store_keys = value.transform_keys do |k|
81
+ names_to_store_keys[k.to_s] || k
82
+ end
83
+ write_attribute(jsonb_attribute, value_with_store_keys)
80
84
 
81
- store_key_attributes = ::JsonbAccessor::QueryHelper.convert_keys_to_store_keys(value, names_to_store_keys)
82
- write_attribute(jsonb_attribute, empty_store_key_attributes.merge(store_key_attributes).compact)
85
+ # this maps attributes to values
86
+ value_with_named_keys = value.transform_keys do |k|
87
+ store_keys_to_names[k.to_s] || k
88
+ end
83
89
 
84
- empty_named_attributes.merge(value).each { |name, attribute_value| write_attribute(name, attribute_value) }
90
+ empty_named_attributes = names_to_store_keys.transform_values { nil }
91
+ empty_named_attributes.merge(value_with_named_keys).each do |name, attribute_value|
92
+ write_attribute(name, attribute_value)
93
+ end
85
94
  end
86
95
  end
87
96
  include setters
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonbAccessor
4
- VERSION = "1.3.1"
4
+ VERSION = "1.3.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonb_accessor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Crismali