@@ -29,7 +29,7 @@ def serializable_hash(options = {})
29
29
end
30
30
else
31
31
@hash [ :data ] = attributes_for_serializer ( serializer , @options )
32
- add_resource_links ( @hash [ :data ] , serializer )
32
+ add_resource_relationships ( @hash [ :data ] , serializer )
33
33
end
34
34
@hash
35
35
end
@@ -41,18 +41,18 @@ def fragment_cache(cached_hash, non_cached_hash)
41
41
42
42
private
43
43
44
- def add_links ( resource , name , serializers )
45
- resource [ :links ] ||= { }
46
- resource [ :links ] [ name ] ||= { linkage : [ ] }
47
- resource [ :links ] [ name ] [ :linkage ] += serializers . map { |serializer | { type : serializer . type , id : serializer . id . to_s } }
44
+ def add_relationships ( resource , name , serializers )
45
+ resource [ :relationships ] ||= { }
46
+ resource [ :relationships ] [ name ] ||= { data : [ ] }
47
+ resource [ :relationships ] [ name ] [ :data ] += serializers . map { |serializer | { type : serializer . type , id : serializer . id . to_s } }
48
48
end
49
49
50
- def add_link ( resource , name , serializer , val = nil )
51
- resource [ :links ] ||= { }
52
- resource [ :links ] [ name ] = { linkage : nil }
50
+ def add_relationship ( resource , name , serializer , val = nil )
51
+ resource [ :relationships ] ||= { }
52
+ resource [ :relationships ] [ name ] = { data : nil }
53
53
54
54
if serializer && serializer . object
55
- resource [ :links ] [ name ] [ :linkage ] = { type : serializer . type , id : serializer . id . to_s }
55
+ resource [ :relationships ] [ name ] [ :data ] = { type : serializer . type , id : serializer . id . to_s }
56
56
end
57
57
end
58
58
@@ -68,7 +68,7 @@ def add_included(resource_name, serializers, parent = nil)
68
68
serializers . each do |serializer |
69
69
attrs = attributes_for_serializer ( serializer , @options )
70
70
71
- add_resource_links ( attrs , serializer , add_included : false )
71
+ add_resource_relationships ( attrs , serializer , add_included : false )
72
72
73
73
@hash [ :included ] . push ( attrs ) unless @hash [ :included ] . include? ( attrs )
74
74
end
@@ -85,26 +85,31 @@ def attributes_for_serializer(serializer, options)
85
85
if serializer . respond_to? ( :each )
86
86
result = [ ]
87
87
serializer . each do |object |
88
- options [ :fields ] = @fieldset && @fieldset . fields_for ( serializer )
89
- result << cache_check ( object ) do
90
- options [ :required_fields ] = [ :id , :type ]
91
- attributes = object . attributes ( options )
92
- attributes [ :id ] = attributes [ :id ] . to_s
93
- result << attributes
94
- end
88
+ result << resource_object_for ( object , options )
95
89
end
96
90
else
97
- options [ :fields ] = @fieldset && @fieldset . fields_for ( serializer )
98
- options [ :required_fields ] = [ :id , :type ]
99
- result = cache_check ( serializer ) do
100
- result = serializer . attributes ( options )
101
- result [ :id ] = result [ :id ] . to_s
102
- result
103
- end
91
+ result = resource_object_for ( serializer , options )
104
92
end
105
93
result
106
94
end
107
95
96
+ def resource_object_for ( serializer , options )
97
+ options [ :fields ] = @fieldset && @fieldset . fields_for ( serializer )
98
+ options [ :required_fields ] = [ :id , :type ]
99
+
100
+ cache_check ( serializer ) do
101
+ attributes = serializer . attributes ( options )
102
+
103
+ result = {
104
+ id : attributes . delete ( :id ) . to_s ,
105
+ type : attributes . delete ( :type )
106
+ }
107
+
108
+ result [ :attributes ] = attributes if attributes . any?
109
+ result
110
+ end
111
+ end
112
+
108
113
def include_assoc? ( assoc )
109
114
return false unless @options [ :include ]
110
115
check_assoc ( "#{ assoc } $" )
@@ -123,19 +128,19 @@ def check_assoc(assoc)
123
128
end
124
129
end
125
130
126
- def add_resource_links ( attrs , serializer , options = { } )
131
+ def add_resource_relationships ( attrs , serializer , options = { } )
127
132
options [ :add_included ] = options . fetch ( :add_included , true )
128
133
129
134
serializer . each_association do |name , association , opts |
130
- attrs [ :links ] ||= { }
135
+ attrs [ :relationships ] ||= { }
131
136
132
137
if association . respond_to? ( :each )
133
- add_links ( attrs , name , association )
138
+ add_relationships ( attrs , name , association )
134
139
else
135
140
if opts [ :virtual_value ]
136
- add_link ( attrs , name , nil , opts [ :virtual_value ] )
141
+ add_relationship ( attrs , name , nil , opts [ :virtual_value ] )
137
142
else
138
- add_link ( attrs , name , association )
143
+ add_relationship ( attrs , name , association )
139
144
end
140
145
end
141
146
0 commit comments