jsonapi_compliable 0.6.13 → 0.7.2
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/.yardopts +1 -0
- data/docs/Jsonapi/ResourceGenerator.html +325 -0
- data/docs/Jsonapi.html +115 -0
- data/docs/JsonapiCompliable/Adapters/Abstract.html +1 -1
- data/docs/JsonapiCompliable/Adapters/ActiveRecord.html +59 -53
- data/docs/JsonapiCompliable/Adapters/ActiveRecordSideloading.html +6 -6
- data/docs/JsonapiCompliable/Adapters/Null.html +1 -1
- data/docs/JsonapiCompliable/Adapters.html +1 -1
- data/docs/JsonapiCompliable/Base.html +113 -117
- data/docs/JsonapiCompliable/Deserializer.html +87 -22
- data/docs/JsonapiCompliable/Errors/BadFilter.html +1 -1
- data/docs/JsonapiCompliable/Errors/StatNotFound.html +1 -1
- data/docs/JsonapiCompliable/Errors/UnsupportedPageSize.html +1 -1
- data/docs/JsonapiCompliable/Errors/ValidationError.html +1 -1
- data/docs/JsonapiCompliable/Errors.html +1 -1
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute/ClassMethods.html +1 -1
- data/docs/JsonapiCompliable/Extensions/BooleanAttribute.html +1 -1
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute/ClassMethods.html +1 -1
- data/docs/JsonapiCompliable/Extensions/ExtraAttribute.html +1 -1
- data/docs/JsonapiCompliable/Extensions.html +1 -1
- data/docs/JsonapiCompliable/Query.html +19 -17
- data/docs/JsonapiCompliable/Rails.html +1 -1
- data/docs/JsonapiCompliable/Resource.html +311 -220
- data/docs/JsonapiCompliable/Scope.html +1 -1
- data/docs/JsonapiCompliable/Scoping/Base.html +1 -1
- data/docs/JsonapiCompliable/Scoping/DefaultFilter.html +1 -1
- data/docs/JsonapiCompliable/Scoping/ExtraFields.html +1 -1
- data/docs/JsonapiCompliable/Scoping/Filter.html +1 -1
- data/docs/JsonapiCompliable/Scoping/Filterable.html +2 -2
- data/docs/JsonapiCompliable/Scoping/Paginate.html +1 -1
- data/docs/JsonapiCompliable/Scoping/Sort.html +1 -1
- data/docs/JsonapiCompliable/Scoping.html +1 -1
- data/docs/JsonapiCompliable/SerializableTempId.html +1 -1
- data/docs/JsonapiCompliable/Sideload.html +229 -78
- data/docs/JsonapiCompliable/Stats/DSL.html +1 -1
- data/docs/JsonapiCompliable/Stats/Payload.html +1 -1
- data/docs/JsonapiCompliable/Stats.html +1 -1
- data/docs/JsonapiCompliable/Util/FieldParams.html +1 -1
- data/docs/JsonapiCompliable/Util/Hash.html +1 -1
- data/docs/JsonapiCompliable/Util/IncludeParams.html +1 -1
- data/docs/JsonapiCompliable/Util/Persistence.html +1 -1
- data/docs/JsonapiCompliable/Util/RelationshipPayload.html +1 -1
- data/docs/JsonapiCompliable/Util/RenderOptions.html +1 -1
- data/docs/JsonapiCompliable/Util/ValidationResponse.html +1 -1
- data/docs/JsonapiCompliable/Util.html +1 -1
- data/docs/JsonapiCompliable.html +210 -3
- data/docs/_index.html +13 -1
- data/docs/class_list.html +1 -1
- data/docs/file.README.html +4 -2
- data/docs/index.html +4 -2
- data/docs/method_list.html +307 -243
- data/docs/top-level-namespace.html +2 -2
- data/lib/generators/jsonapi/resource_generator.rb +139 -58
- data/lib/generators/jsonapi/templates/application_resource.rb.erb +11 -2
- data/lib/generators/jsonapi/templates/controller.rb.erb +34 -0
- data/lib/generators/jsonapi/templates/destroy_request_spec.rb.erb +1 -1
- data/lib/generators/jsonapi/templates/payload.rb.erb +31 -0
- data/lib/generators/jsonapi/templates/resource.rb.erb +47 -0
- data/lib/generators/jsonapi/templates/serializer.rb.erb +17 -0
- data/lib/jsonapi_compliable/adapters/active_record_sideloading.rb +5 -5
- data/lib/jsonapi_compliable/resource.rb +11 -5
- data/lib/jsonapi_compliable/sideload.rb +40 -11
- data/lib/jsonapi_compliable/util/persistence.rb +9 -2
- data/lib/jsonapi_compliable/util/relationship_payload.rb +6 -0
- data/lib/jsonapi_compliable/util/validation_response.rb +2 -1
- data/lib/jsonapi_compliable/version.rb +1 -1
- metadata +4 -2
|
@@ -52,11 +52,18 @@ class JsonapiCompliable::Util::Persistence
|
|
|
52
52
|
def update_foreign_key(parent_object, attrs, x)
|
|
53
53
|
if [:destroy, :disassociate].include?(x[:meta][:method])
|
|
54
54
|
attrs[x[:foreign_key]] = nil
|
|
55
|
+
update_foreign_type(attrs, x, null: true) if x[:is_polymorphic]
|
|
55
56
|
else
|
|
56
57
|
attrs[x[:foreign_key]] = parent_object.send(x[:primary_key])
|
|
58
|
+
update_foreign_type(attrs, x) if x[:is_polymorphic]
|
|
57
59
|
end
|
|
58
60
|
end
|
|
59
61
|
|
|
62
|
+
def update_foreign_type(attrs, x, null: false)
|
|
63
|
+
grouping_field = x[:sideload].parent.grouping_field
|
|
64
|
+
attrs[grouping_field] = null ? nil : x[:sideload].name
|
|
65
|
+
end
|
|
66
|
+
|
|
60
67
|
def update_foreign_key_for_parents(parents)
|
|
61
68
|
parents.each do |x|
|
|
62
69
|
update_foreign_key(x[:object], @attributes, x)
|
|
@@ -88,7 +95,7 @@ class JsonapiCompliable::Util::Persistence
|
|
|
88
95
|
|
|
89
96
|
def process_has_many(relationships)
|
|
90
97
|
[].tap do |processed|
|
|
91
|
-
iterate(except: [:belongs_to]) do |x|
|
|
98
|
+
iterate(except: [:polymorphic_belongs_to, :belongs_to]) do |x|
|
|
92
99
|
yield x
|
|
93
100
|
x[:object] = x[:sideload].resource
|
|
94
101
|
.persist_with_relationships(x[:meta], x[:attributes], x[:relationships])
|
|
@@ -99,7 +106,7 @@ class JsonapiCompliable::Util::Persistence
|
|
|
99
106
|
|
|
100
107
|
def process_belongs_to(relationships)
|
|
101
108
|
[].tap do |processed|
|
|
102
|
-
iterate(only: [:belongs_to]) do |x|
|
|
109
|
+
iterate(only: [:polymorphic_belongs_to, :belongs_to]) do |x|
|
|
103
110
|
x[:object] = x[:sideload].resource
|
|
104
111
|
.persist_with_relationships(x[:meta], x[:attributes], x[:relationships])
|
|
105
112
|
processed << x
|
|
@@ -43,8 +43,14 @@ module JsonapiCompliable
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def payload_for(sideload, relationship_payload)
|
|
46
|
+
if sideload.polymorphic?
|
|
47
|
+
type = relationship_payload[:meta][:jsonapi_type]
|
|
48
|
+
sideload = sideload.polymorphic_child_for_type(type)
|
|
49
|
+
end
|
|
50
|
+
|
|
46
51
|
{
|
|
47
52
|
sideload: sideload,
|
|
53
|
+
is_polymorphic: !sideload.parent.nil?,
|
|
48
54
|
primary_key: sideload.primary_key,
|
|
49
55
|
foreign_key: sideload.foreign_key,
|
|
50
56
|
attributes: relationship_payload[:attributes],
|
|
@@ -33,7 +33,8 @@ class JsonapiCompliable::Util::ValidationResponse
|
|
|
33
33
|
private
|
|
34
34
|
|
|
35
35
|
def valid_object?(object)
|
|
36
|
-
object.respond_to?(:errors)
|
|
36
|
+
!object.respond_to?(:errors) ||
|
|
37
|
+
(object.respond_to?(:errors) && object.errors.blank?)
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
def all_valid?(model, deserialized_params)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: jsonapi_compliable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lee Richmond
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2017-
|
|
12
|
+
date: 2017-07-06 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: jsonapi-serializable
|
|
@@ -139,6 +139,8 @@ files:
|
|
|
139
139
|
- bin/console
|
|
140
140
|
- bin/rspec
|
|
141
141
|
- bin/setup
|
|
142
|
+
- docs/Jsonapi.html
|
|
143
|
+
- docs/Jsonapi/ResourceGenerator.html
|
|
142
144
|
- docs/JsonapiCompliable.html
|
|
143
145
|
- docs/JsonapiCompliable/Adapters.html
|
|
144
146
|
- docs/JsonapiCompliable/Adapters/Abstract.html
|