store_attribute 0.9.0 → 0.9.1

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: 8e666327899587f17df5c5196abd1f6094388d08c4ca4c020b9a67f182fa0660
4
- data.tar.gz: 6a23e7d6122483843caaa7ae6d2da59e33e0c250c96306839bbb4cac8242ea87
3
+ metadata.gz: 5de07480a22b55413fe34512b0d36a6572da92390c998dcc1ad7838866667e5c
4
+ data.tar.gz: 78d3d38f95d1f614f6d9233f0a0bfa52b67a65853f741fedbb8ff510e38e6988
5
5
  SHA512:
6
- metadata.gz: b61d2f76d32c9ddbe3c993896a1826662b8afc881e7b72674ab21d8954e70dbae25630996ab920eeeb752436e433949bec36914d3b6a3278909ca85fce889de5
7
- data.tar.gz: 07bb42459a9925b247b6cea363df401c4c9a92787bf6aca1de2bf795575e5895f331a0d4cd983e9b82ee1d27d0a35b47cd6a791314a756fcf78b438e8a25aea0
6
+ metadata.gz: 3831baa1c5de7d7dee01dfe5ee0be5a1478b95a2e110c37e1c9ebd405c1246e300cc4eadbbf0b3e83742c8ea258db7399ddd0dc3df10c8797e7b911428bbd3e9
7
+ data.tar.gz: 774eb359b1ba5e02022f7e931089990f0d169116cbd8f9c725bc7f8bfa8189dce9c649ca3b7b3face0eccbca13b73dbb2a1028ab6f282dfe797b65adffab627c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 0.9.1
6
+
7
+ - Fix bug with dirty nullable stores. ([@palkan][])
8
+
5
9
  ## 0.9.0 (2021-08-17) 📉
6
10
 
7
11
  - Default values no longer marked as dirty. ([@markedmondson][])
@@ -6,7 +6,7 @@ require "store_attribute/active_record/type/typed_store"
6
6
  module ActiveRecord
7
7
  module Store
8
8
  module ClassMethods # :nodoc:
9
- alias _orig_store store
9
+ alias_method :_orig_store, :store
10
10
  # Defines store on this model.
11
11
  #
12
12
  # +store_name+ The name of the store.
@@ -63,25 +63,6 @@ module ActiveRecord
63
63
 
64
64
  _prepare_local_stored_attributes(store_name, *keys)
65
65
 
66
- _store_accessors_module.module_eval do
67
- define_method("changes") do
68
- return @changes if defined?(@changes)
69
- changes = super()
70
- self.class.local_stored_attributes.each do |accessor, attributes|
71
- next unless attribute_changed?(accessor)
72
-
73
- prev_store, new_store = changes[accessor]
74
- prev_store.each do |key, value|
75
- if new_store[key] == value
76
- changes[accessor][0].except!(key)
77
- changes[accessor][1].except!(key)
78
- end
79
- end
80
- end
81
- @changes = changes
82
- end
83
- end
84
-
85
66
  _define_dirty_tracking_methods(store_name, keys + typed_keys.keys, prefix: accessor_prefix, suffix: accessor_suffix)
86
67
 
87
68
  typed_keys.each do |key, type|
@@ -204,6 +185,24 @@ module ActiveRecord
204
185
 
205
186
  def _define_dirty_tracking_methods(store_attribute, keys, prefix: nil, suffix: nil)
206
187
  _store_accessors_module.module_eval do
188
+ define_method("changes") do
189
+ return @changes if defined?(@changes)
190
+ changes = super()
191
+ self.class.local_stored_attributes.each do |accessor, attributes|
192
+ next unless attribute_changed?(accessor)
193
+
194
+ prev_store, new_store = changes[accessor]
195
+
196
+ prev_store&.each do |key, value|
197
+ if new_store[key] == value
198
+ prev_store.except!(key)
199
+ new_store&.except!(key)
200
+ end
201
+ end
202
+ end
203
+ @changes = changes
204
+ end
205
+
207
206
  keys.flatten.each do |key|
208
207
  key = key.to_s
209
208
  accessor_key = "#{prefix}#{key}#{suffix}"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StoreAttribute # :nodoc:
4
- VERSION = "0.9.0"
4
+ VERSION = "0.9.1"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: store_attribute
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - palkan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-17 00:00:00.000000000 Z
11
+ date: 2021-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -52,34 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '13.0'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop-md
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.3'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.3'
69
- - !ruby/object:Gem::Dependency
70
- name: standard
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.2.0
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.2.0
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: rspec
85
57
  requirement: !ruby/object:Gem::Requirement
@@ -126,14 +98,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
98
  requirements:
127
99
  - - ">="
128
100
  - !ruby/object:Gem::Version
129
- version: 2.4.0
101
+ version: 2.5.0
130
102
  required_rubygems_version: !ruby/object:Gem::Requirement
131
103
  requirements:
132
104
  - - ">="
133
105
  - !ruby/object:Gem::Version
134
106
  version: '0'
135
107
  requirements: []
136
- rubygems_version: 3.2.15
108
+ rubygems_version: 3.2.22
137
109
  signing_key:
138
110
  specification_version: 4
139
111
  summary: ActiveRecord extension which adds typecasting to store accessors