standard_procedure_has_attributes 0.2.0 → 0.2.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: 95b72e89130c7a9ae47a13d0494fc1db6e226270afd199d485784b00a0d8c1d9
4
- data.tar.gz: 74bb291b713e6411ec4beafc93037b3c820f5a43679a2ed14dbf002cbf241e1a
3
+ metadata.gz: 778498af3e84a9695e11e78dea536d76dca1be4d86919b81694cd5d0cb39be19
4
+ data.tar.gz: 6351d9e54b44182b9c076bc3b861293cbcd328368e34a7c11f18432984d4e406
5
5
  SHA512:
6
- metadata.gz: 454619f884749f7b3574ab27849b7a05af02fb2771fd7da1b23659929ac74387e3e1e4ca3a86d758036e2e46c0fa7d8b25b550d6cc1140a9ff558a923d8f8c04
7
- data.tar.gz: 7c637ddb9731fd644075fcee07f62130037cf51bd70b64fce1cf53ceb45402a776ee10687b2579d9595ef07803d3eccf9a77c739f35ec50aefcf00ae78d0be81
6
+ metadata.gz: b110c7d8308842ef2e7d00809d797ac4808105db8f494df2e2a22388c6923f28ddb8b8361b9b91a728976ee5fbf9aaca4b55ec198334e902d406fbc06ab0eb2c
7
+ data.tar.gz: e45bd96f526d0a04c82b1d6911bded7f37e54831b05e7b1a42a3c83b8847fbef132f484149924a2844ed36df31f0ec1f5cdc70512909b258e95a5dc8064eb570
@@ -0,0 +1 @@
1
+ 63c96059dcaa5affe06c9dd6d785385b00b8908dd7f6301cc2e7f09cf442f88c68d36e1b3448a5bab589cc2a91fb7363fd038ed6300ffa87f57548edd517c56f
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HasAttributes
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -15,19 +15,20 @@ module HasAttributes
15
15
  name = name.to_s
16
16
  typecaster = cast_type.nil? ? nil : ActiveRecord::Type.lookup(cast_type)
17
17
  typecast_value = ->(value) { typecaster.nil? ? value : typecaster.cast(value) }
18
+ field_name_value = ->(instance) { instance.send(field_name.to_sym) || {} }
18
19
  define_attribute_method name
19
20
  if cast_type != :boolean
20
- define_method(name.to_sym) { typecast_value.call(send(field_name.to_sym)[name.to_s]) || options[:default] }
21
+ define_method(name.to_sym) { typecast_value.call(field_name_value.call(self)[name.to_s]) || options[:default] }
21
22
  else
22
23
  define_method(name.to_sym) do
23
- value = typecast_value.call(send(field_name.to_sym)[name.to_s])
24
+ value = typecast_value.call(field_name_value.call(self)[name.to_s])
24
25
  [true, false].include?(value) ? value : options[:default]
25
26
  end
26
27
  alias_method :"#{name}?", name.to_sym
27
28
  end
28
29
  define_method(:"#{name}=") do |value|
29
30
  attribute_will_change! name
30
- send(field_name.to_sym)[name.to_s] = typecast_value.call(value)
31
+ send :"#{field_name}=", field_name_value.call(self).merge(name.to_s => typecast_value.call(value))
31
32
  end
32
33
  end
33
34
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: standard_procedure_has_attributes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rahoul Baruah
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-07-01 00:00:00.000000000 Z
10
+ date: 2025-07-03 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: activesupport
@@ -53,6 +53,7 @@ files:
53
53
  - Rakefile
54
54
  - checksums/standard_procedure_has_attributes-0.1.0.gem.sha512
55
55
  - checksums/standard_procedure_has_attributes-0.2.0.gem.sha512
56
+ - checksums/standard_procedure_has_attributes-0.2.1.gem.sha512
56
57
  - lib/has_attributes.rb
57
58
  - lib/has_attributes/version.rb
58
59
  - sig/has_attributes.rbs