store_model 1.0.0 → 1.1.0

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: 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