store_model 1.0.0 → 1.1.0

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: 4da1ca43da439ca2634d69307669020e77ac7349c3ab8fc61ac0386a6e980715
4
- data.tar.gz: 2f88d2308bfb76be228eebdb7e6ecd1df5f63a4c8b751f0d41a289e5a30cfb1a
3
+ metadata.gz: df54ca03d99d1173d2e94d32c6a8cc4fa4a503c8f6d7a26b77ff4275e9cf7420
4
+ data.tar.gz: 011b0d5f4fe3532998bca81043895f0882a5f709245c4d688a0226ba17eb2cbb
5
5
  SHA512:
6
- metadata.gz: 4dd14031ebb8949192d31cfcbcc48609a7670c023d3968e12ee32a7db686081bdc67390cb6538519eb79d1ba3f4cc4ee1ef9f5496d4f06991fae1ee24eb9bb8f
7
- data.tar.gz: 32e2ae5a3c1a5286cb299039de8b435a919e0618d9251904b3c0c32b439601da7847d9d33e2f039d56831621df4692013d345b8ac946f2c7c59a99d927f53f85
6
+ metadata.gz: c4dad930177bc577c03a7f12959f57ac897dd1caa17c2817786e15e4e120dee2b1563778575c5eebcbaf9639abca7b8a8ea7bf9ba4f6ee93e2624267d4a06798
7
+ data.tar.gz: dc0a1200e73a465832e3abb9b6778991395a8c70b19b0e1480b19f15b723d64bc7e259fdbeaef6be837c286767675bf44f1828173a8004edfa0f058f7db1888f
@@ -10,5 +10,13 @@ module StoreModel
10
10
  # Controls usage of MergeArrayErrorStrategy
11
11
  # @return [Boolean]
12
12
  attr_accessor :merge_array_errors
13
+
14
+ # Controls if the result of `as_json` will contain the unknown attributes of the model
15
+ # @return [Boolean]
16
+ attr_accessor :serialize_unknown_attributes
17
+
18
+ def initialize
19
+ @serialize_unknown_attributes = true
20
+ end
13
21
  end
14
22
  end
@@ -30,7 +30,15 @@ module StoreModel
30
30
  #
31
31
  # @return [Hash]
32
32
  def as_json(options = {})
33
- attributes.with_indifferent_access.merge(unknown_attributes).as_json(options)
33
+ serialize_unknown_attributes = if options.key?(:serialize_unknown_attributes)
34
+ options[:serialize_unknown_attributes]
35
+ else
36
+ StoreModel.config.serialize_unknown_attributes
37
+ end
38
+
39
+ result = attributes.with_indifferent_access
40
+ result.merge!(unknown_attributes) if serialize_unknown_attributes
41
+ result.as_json(options)
34
42
  end
35
43
 
36
44
  # Compares two StoreModel::Model instances
@@ -43,6 +51,7 @@ module StoreModel
43
51
 
44
52
  attributes.all? { |name, value| value == other.attributes[name] }
45
53
  end
54
+ alias eql? ==
46
55
 
47
56
  # Returns hash for a StoreModel::Model instance based on attributes hash
48
57
  #
@@ -38,7 +38,7 @@ module StoreModel
38
38
  def serialize(value)
39
39
  case value
40
40
  when Array
41
- ActiveSupport::JSON.encode(value)
41
+ ActiveSupport::JSON.encode(value, serialize_unknown_attributes: true)
42
42
  else
43
43
  super
44
44
  end
@@ -47,7 +47,7 @@ module StoreModel
47
47
  def serialize(value)
48
48
  case value
49
49
  when Hash, @model_klass
50
- ActiveSupport::JSON.encode(value)
50
+ ActiveSupport::JSON.encode(value, serialize_unknown_attributes: true)
51
51
  else
52
52
  super
53
53
  end
@@ -52,9 +52,11 @@ module StoreModel
52
52
  def serialize(value)
53
53
  case value
54
54
  when Hash
55
- ActiveSupport::JSON.encode(value)
55
+ ActiveSupport::JSON.encode(value, serialize_unknown_attributes: true)
56
56
  else
57
- return ActiveSupport::JSON.encode(value) if implements_model?(value.class)
57
+ if implements_model?(value.class)
58
+ return ActiveSupport::JSON.encode(value, serialize_unknown_attributes: true)
59
+ end
58
60
 
59
61
  super
60
62
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StoreModel # :nodoc:
4
- VERSION = "1.0.0"
4
+ VERSION = "1.1.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: store_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DmitryTsepelev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-27 00:00:00.000000000 Z
11
+ date: 2022-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord