invalid_model-serializer 0.1.3 → 0.3.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 +4 -4
- data/lib/invalid_model/{error_serializer.rb → each_serializer.rb} +19 -7
- data/lib/invalid_model/serializer.rb +8 -21
- metadata +32 -23
- data/lib/invalid_model/error.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9df9c8c97e477bfe43272531f1f9a140277bfa6930954ef23679cca0d4609d94
|
4
|
+
data.tar.gz: c46c3cb748b469558e2537c6a20ddf7039555c0eaaf1241e0b2673121dd41cbc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ea7f952abaa153b05dcdf912fbaf88a4ce8979c29a6add096057f9295544e9f534a1e5cc6c8e28c622246707a4e8df6c09e83c88414f30aac84c895078573b1
|
7
|
+
data.tar.gz: 610f619ced00bf1aa0e6969646d6ed76e8cfc875a5fd8d29b0ab3b9270c313f29ead66caeaa705451cf51839d906a562dcf0c70d67a530cc5516950a033575a4
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module InvalidModel
|
2
|
-
class
|
3
|
-
def initialize(error, options = {})
|
2
|
+
class EachSerializer
|
3
|
+
def initialize(resource, error, options = {})
|
4
|
+
@resource = resource
|
4
5
|
@error = error
|
5
6
|
@options = options
|
6
7
|
end
|
@@ -9,7 +10,7 @@ module InvalidModel
|
|
9
10
|
{
|
10
11
|
code: code,
|
11
12
|
detail: detail,
|
12
|
-
meta: meta
|
13
|
+
meta: meta,
|
13
14
|
source: source,
|
14
15
|
status: status
|
15
16
|
}.compact
|
@@ -17,13 +18,14 @@ module InvalidModel
|
|
17
18
|
|
18
19
|
private
|
19
20
|
|
20
|
-
attr_reader :error
|
21
|
+
attr_reader :error, :resource
|
21
22
|
|
22
|
-
delegate :attribute, :
|
23
|
+
delegate :attribute, :type, to: :error
|
24
|
+
delegate :errors, :model_name, to: :resource
|
23
25
|
|
24
26
|
def code
|
25
|
-
if @options[:code]
|
26
|
-
@options[:code].call error
|
27
|
+
if @options[:code].respond_to?(:call)
|
28
|
+
@options[:code].call resource, error
|
27
29
|
elsif @options[:code]
|
28
30
|
@options[:code]
|
29
31
|
else
|
@@ -35,6 +37,16 @@ module InvalidModel
|
|
35
37
|
@options[:code_format] || InvalidModel::Serializer.default_code_format
|
36
38
|
end
|
37
39
|
|
40
|
+
def detail
|
41
|
+
errors.full_message(attribute, errors.generate_message(attribute, type, error.options))
|
42
|
+
end
|
43
|
+
|
44
|
+
def meta
|
45
|
+
return unless error.options.present?
|
46
|
+
|
47
|
+
error.options.except(*ActiveModel::Error::CALLBACKS_OPTIONS)
|
48
|
+
end
|
49
|
+
|
38
50
|
def source
|
39
51
|
return @options[:source] if @options.key?(:source)
|
40
52
|
return if attribute == :base
|
@@ -2,8 +2,8 @@
|
|
2
2
|
require 'active_support'
|
3
3
|
|
4
4
|
module InvalidModel
|
5
|
-
autoload :Error,
|
6
|
-
autoload :
|
5
|
+
autoload :Error, 'invalid_model/error'
|
6
|
+
autoload :EachSerializer, 'invalid_model/each_serializer'
|
7
7
|
|
8
8
|
class Serializer
|
9
9
|
include ActiveSupport::Configurable
|
@@ -17,30 +17,17 @@ module InvalidModel
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def serializable_hash
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
list = []
|
21
|
+
@resource.errors.each do |error|
|
22
|
+
list << each_serializer_klass.new(@resource, error, @options).serializable_hash
|
23
|
+
end
|
24
|
+
{errors: list}
|
23
25
|
end
|
24
26
|
|
25
27
|
private
|
26
28
|
|
27
29
|
def each_serializer_klass
|
28
|
-
@options[:each_serializer] ||
|
29
|
-
end
|
30
|
-
|
31
|
-
def errors_object
|
32
|
-
@resource.errors
|
33
|
-
end
|
34
|
-
|
35
|
-
def errors_list
|
36
|
-
list = errors_object.details.map do |key, array|
|
37
|
-
array.map { |error| Error.from_hash(errors_object, key, error) }
|
38
|
-
end
|
39
|
-
list.flatten
|
40
|
-
end
|
41
|
-
|
42
|
-
def serialized_errors
|
43
|
-
errors_list.map { |error| each_serializer_klass.new(error, @options).serializable_hash }
|
30
|
+
@options[:each_serializer] || EachSerializer
|
44
31
|
end
|
45
32
|
end
|
46
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invalid_model-serializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mkon
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,34 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.1'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '7.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '6.1'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '7.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activemodel
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: '6.1'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '7.1'
|
40
43
|
type: :development
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- - "
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '6.1'
|
50
|
+
- - "<"
|
45
51
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
52
|
+
version: '7.1'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
54
|
name: json_spec
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,28 +84,28 @@ dependencies:
|
|
78
84
|
requirements:
|
79
85
|
- - '='
|
80
86
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
87
|
+
version: 1.28.2
|
82
88
|
type: :development
|
83
89
|
prerelease: false
|
84
90
|
version_requirements: !ruby/object:Gem::Requirement
|
85
91
|
requirements:
|
86
92
|
- - '='
|
87
93
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
94
|
+
version: 1.28.2
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: rubocop-rspec
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
92
98
|
requirements:
|
93
99
|
- - '='
|
94
100
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
101
|
+
version: 2.10.0
|
96
102
|
type: :development
|
97
103
|
prerelease: false
|
98
104
|
version_requirements: !ruby/object:Gem::Requirement
|
99
105
|
requirements:
|
100
106
|
- - '='
|
101
107
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
108
|
+
version: 2.10.0
|
103
109
|
- !ruby/object:Gem::Dependency
|
104
110
|
name: simplecov
|
105
111
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,7 +120,7 @@ dependencies:
|
|
114
120
|
- - "~>"
|
115
121
|
- !ruby/object:Gem::Version
|
116
122
|
version: '0.16'
|
117
|
-
description:
|
123
|
+
description:
|
118
124
|
email:
|
119
125
|
- konstantin@munteanu.de
|
120
126
|
executables: []
|
@@ -123,14 +129,14 @@ extra_rdoc_files: []
|
|
123
129
|
files:
|
124
130
|
- LICENSE
|
125
131
|
- README.md
|
126
|
-
- lib/invalid_model/
|
127
|
-
- lib/invalid_model/error_serializer.rb
|
132
|
+
- lib/invalid_model/each_serializer.rb
|
128
133
|
- lib/invalid_model/serializer.rb
|
129
134
|
homepage: https://github.com/mkon/invalid_model-serializer
|
130
135
|
licenses:
|
131
136
|
- MIT
|
132
|
-
metadata:
|
133
|
-
|
137
|
+
metadata:
|
138
|
+
rubygems_mfa_required: 'true'
|
139
|
+
post_install_message:
|
134
140
|
rdoc_options: []
|
135
141
|
require_paths:
|
136
142
|
- lib
|
@@ -138,15 +144,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
144
|
requirements:
|
139
145
|
- - ">="
|
140
146
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
147
|
+
version: '2.7'
|
148
|
+
- - "<"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '3.1'
|
142
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
152
|
requirements:
|
144
153
|
- - ">="
|
145
154
|
- !ruby/object:Gem::Version
|
146
155
|
version: '0'
|
147
156
|
requirements: []
|
148
|
-
rubygems_version: 3.
|
149
|
-
signing_key:
|
157
|
+
rubygems_version: 3.2.15
|
158
|
+
signing_key:
|
150
159
|
specification_version: 4
|
151
160
|
summary: Serialize models with validation errors to json-api errors.
|
152
161
|
test_files: []
|
data/lib/invalid_model/error.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module InvalidModel
|
2
|
-
class Error
|
3
|
-
def self.from_hash(errors_object, attribute, hash)
|
4
|
-
new(errors_object, attribute, hash[:error], hash.except(:error))
|
5
|
-
end
|
6
|
-
|
7
|
-
attr_reader :attribute, :errors_object, :type, :meta
|
8
|
-
|
9
|
-
def initialize(errors_object, attribute, type, meta)
|
10
|
-
@errors_object = errors_object
|
11
|
-
@attribute = attribute
|
12
|
-
@type = type
|
13
|
-
@meta = meta
|
14
|
-
end
|
15
|
-
|
16
|
-
def detail
|
17
|
-
@errors_object.full_message(attribute, errors_object.generate_message(attribute, type, meta))
|
18
|
-
end
|
19
|
-
|
20
|
-
def model_name
|
21
|
-
errors_object.instance_variable_get(:@base).model_name
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|