active_model_serializers-jsonapi_embedded_records_deserializer 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|