jsonb_accessor 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
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