active_model_serializers-jsonapi_embedded_records_deserializer 0.1.0 → 0.1.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 +4 -4
- data/Gemfile +2 -0
- data/README.md +11 -0
- data/active_model_serializers-jsonapi_embedded_records_deserializer.gemspec +1 -4
- data/lib/active_model_serializers/jsonapi_embedded_records_deserializer.rb +27 -31
- data/lib/active_model_serializers/jsonapi_embedded_records_deserializer/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55bff852af304051e3a1cf877e98b7a0a326ecea
|
4
|
+
data.tar.gz: 706aeb581143f92f99562433414abf5d23064e8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 872fc591f2e067eaec302ec321b0c10fe13807d242a89e5a8876a894cc43c1545f9b3f4ee8075c445ad3570d539e3ec996810fe8cfb0d163297aa53c90c4787e
|
7
|
+
data.tar.gz: 0e2ba3bcd8001ec8c2e2f595df04b1df3e3ee8682826962a56f80311b1d59b894057d09f69c40350b47732de0874ebe4cc040290e412ae32695d0957222e3013
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -82,6 +82,17 @@ specified in the `embedded` key of the deserialization options.
|
|
82
82
|
ActiveModelSerializers::Deserialization.jsonapi_parse(data, embedded: [:author])
|
83
83
|
```
|
84
84
|
|
85
|
+
The deserialization part of ActiveModelSerializer is restructured between
|
86
|
+
`0.10.0.rc4` and the current `master` branch. Please check the version table
|
87
|
+
below to choose the right gem version.
|
88
|
+
|
89
|
+
|-------------------------------|-------------|
|
90
|
+
| ActiveModelSerializer version | Gem version |
|
91
|
+
|-------------------------------|-------------|
|
92
|
+
| 0.10.0.rc4 | 0.1.0 |
|
93
|
+
| master (currently: c7b2916) | 0.1.1 |
|
94
|
+
|-------------------------------|-------------|
|
95
|
+
|
85
96
|
## Development
|
86
97
|
|
87
98
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -18,10 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
|
22
|
-
# deserializer has already been moved to
|
23
|
-
# active_model_serializers/adapter/json_api/deserialization
|
24
|
-
spec.add_dependency 'active_model_serializers', '0.10.0.rc4'
|
21
|
+
spec.add_dependency 'active_model_serializers'
|
25
22
|
spec.add_runtime_dependency 'railties', '>= 4.0'
|
26
23
|
|
27
24
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
@@ -1,44 +1,40 @@
|
|
1
1
|
require 'active_model_serializers/jsonapi_embedded_records_deserializer/version'
|
2
|
-
require '
|
2
|
+
require 'active_model_serializers/adapter/json_api/deserialization'
|
3
3
|
|
4
4
|
module ActiveModelSerializers
|
5
5
|
module JsonapiEmbeddedRecordsDeserializer
|
6
6
|
end
|
7
|
-
end
|
8
7
|
|
9
|
-
module
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
module Deserialization
|
14
|
-
module_function
|
8
|
+
module Adapter
|
9
|
+
class JsonApi
|
10
|
+
module Deserialization
|
11
|
+
module_function
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
def parse_relationship(assoc_name, assoc_data, options)
|
14
|
+
prefix_key = field_key(assoc_name, options).to_s.singularize
|
15
|
+
hash =
|
16
|
+
if (options[:embedded] || []).include?(assoc_name.to_sym)
|
17
|
+
parse_nested_attributes(assoc_name, assoc_data, options)
|
18
|
+
elsif assoc_data.is_a?(Array)
|
19
|
+
{ "#{prefix_key}_ids".to_sym => assoc_data.map { |ri| ri['id'] } }
|
20
|
+
else
|
21
|
+
{ "#{prefix_key}_id".to_sym => assoc_data ? assoc_data['id'] : nil }
|
22
|
+
end
|
26
23
|
|
27
|
-
|
28
|
-
|
24
|
+
polymorphic = (options[:polymorphic] || []).include?(assoc_name.to_sym)
|
25
|
+
hash["#{prefix_key}_type".to_sym] = assoc_data['type'] if polymorphic
|
29
26
|
|
30
|
-
|
31
|
-
|
27
|
+
hash
|
28
|
+
end
|
32
29
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
30
|
+
def parse_nested_attributes(assoc_name, assoc_data, options)
|
31
|
+
data =
|
32
|
+
if assoc_data.is_a?(Array)
|
33
|
+
assoc_data.map { |ri| parse({ 'data' => ri }, options) }
|
34
|
+
else
|
35
|
+
parse({ 'data' => assoc_data }, options)
|
36
|
+
end
|
37
|
+
{ "#{assoc_name}_attributes".to_sym => data }
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_model_serializers-jsonapi_embedded_records_deserializer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Spieker
|
@@ -14,16 +14,16 @@ dependencies:
|
|
14
14
|
name: active_model_serializers
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: railties
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|