jsonapi-resources 0.3.0.pre1 → 0.3.0.pre2
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/README.md +4 -0
- data/lib/jsonapi/request.rb +19 -5
- data/lib/jsonapi/resources/version.rb +1 -1
- data/test/controllers/controller_test.rb +70 -35
- data/test/integration/requests/request_test.rb +26 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9adad069e77c8437a28d82ed522448f10282551d
|
4
|
+
data.tar.gz: d5cbb50ba9bec003e03d50f54c930dd2b47f16ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8453158ff6be52c6fa81fdbcda63543fb9d2952dd9ff3c10c411c543e718bbf52ca0eb1c8104a02e80d856c33a18498dbff5644ec0b6a5645266e3c79d0380a
|
7
|
+
data.tar.gz: d42d5196aa3f1728356d5378f45f16fcd5180304dcdc9d380b2d937934f2bdc9a6cb14f4748dcb0c4b43c3a46efc14214dc96a573d224ac7ad17ed3ff6b57a2c
|
data/README.md
CHANGED
@@ -10,6 +10,10 @@ JR is designed to work with Rails, and provides custom routes, controllers, and
|
|
10
10
|
|
11
11
|
We have a simple demo app, called [Peeps](https://github.com/cerebris/peeps), available to show how JR is used.
|
12
12
|
|
13
|
+
## Client Libraries
|
14
|
+
|
15
|
+
JSON API maintains a (non-verified) listing of [client libraries](http://jsonapi.org/implementations/#client-libraries) which *should* be compatible with JSON API compliant server implementations such as JR.
|
16
|
+
|
13
17
|
## Installation
|
14
18
|
|
15
19
|
Add JR to your application's `Gemfile`:
|
data/lib/jsonapi/request.rb
CHANGED
@@ -278,7 +278,13 @@ module JSONAPI
|
|
278
278
|
association = @resource_klass._association(param)
|
279
279
|
|
280
280
|
if association.is_a?(JSONAPI::Association::HasOne)
|
281
|
-
|
281
|
+
if link_value.nil?
|
282
|
+
linkage = nil
|
283
|
+
else
|
284
|
+
linkage = link_value[:linkage]
|
285
|
+
end
|
286
|
+
|
287
|
+
links_object = parse_has_one_links_object(linkage)
|
282
288
|
# Since we do not yet support polymorphic associations we will raise an error if the type does not match the
|
283
289
|
# association's type.
|
284
290
|
# ToDo: Support Polymorphic associations
|
@@ -293,7 +299,15 @@ module JSONAPI
|
|
293
299
|
checked_has_one_associations[param] = nil
|
294
300
|
end
|
295
301
|
elsif association.is_a?(JSONAPI::Association::HasMany)
|
296
|
-
|
302
|
+
if link_value.is_a?(Array) && link_value.length == 0
|
303
|
+
linkage = []
|
304
|
+
elsif link_value.is_a?(Hash)
|
305
|
+
linkage = link_value[:linkage]
|
306
|
+
else
|
307
|
+
raise JSONAPI::Exceptions::InvalidLinksObject.new
|
308
|
+
end
|
309
|
+
|
310
|
+
links_object = parse_has_many_links_object(linkage)
|
297
311
|
|
298
312
|
# Since we do not yet support polymorphic associations we will raise an error if the type does not match the
|
299
313
|
# association's type.
|
@@ -350,7 +364,7 @@ module JSONAPI
|
|
350
364
|
association = resource_klass._association(association_type)
|
351
365
|
|
352
366
|
if association.is_a?(JSONAPI::Association::HasMany)
|
353
|
-
object_params = {links: {association.name => data}}
|
367
|
+
object_params = {links: {association.name => {linkage: data}}}
|
354
368
|
verified_param_set = parse_params(object_params, @resource_klass.updateable_fields(@context))
|
355
369
|
|
356
370
|
@operations.push JSONAPI::CreateHasManyAssociationOperation.new(resource_klass,
|
@@ -364,7 +378,7 @@ module JSONAPI
|
|
364
378
|
association = resource_klass._association(association_type)
|
365
379
|
|
366
380
|
if association.is_a?(JSONAPI::Association::HasOne)
|
367
|
-
object_params = {links: {association.name => data}}
|
381
|
+
object_params = {links: {association.name => {linkage: data}}}
|
368
382
|
|
369
383
|
verified_param_set = parse_params(object_params, @resource_klass.updateable_fields(@context))
|
370
384
|
|
@@ -373,7 +387,7 @@ module JSONAPI
|
|
373
387
|
association_type,
|
374
388
|
verified_param_set[:has_one].values[0])
|
375
389
|
else
|
376
|
-
object_params = {links: {association.name => data}}
|
390
|
+
object_params = {links: {association.name => {linkage: data}}}
|
377
391
|
verified_param_set = parse_params(object_params, @resource_klass.updateable_fields(@context))
|
378
392
|
|
379
393
|
@operations.push JSONAPI::ReplaceHasManyAssociationOperation.new(resource_klass,
|
@@ -278,7 +278,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
278
278
|
title: 'JR is Great',
|
279
279
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
280
280
|
links: {
|
281
|
-
author: {type: 'people', id: '3'}
|
281
|
+
author: {linkage: {type: 'people', id: '3'}}
|
282
282
|
}
|
283
283
|
}
|
284
284
|
}
|
@@ -299,7 +299,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
299
299
|
title: 'JR is Great',
|
300
300
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
301
301
|
links: {
|
302
|
-
author: {type: 'people', id: '304567'}
|
302
|
+
author: {linkage: {type: 'people', id: '304567'}}
|
303
303
|
}
|
304
304
|
}
|
305
305
|
}
|
@@ -319,7 +319,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
319
319
|
title: 'JR is Great',
|
320
320
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
321
321
|
links: {
|
322
|
-
author: {type: 'people', id: '3'}
|
322
|
+
author: {linkage: {type: 'people', id: '3'}}
|
323
323
|
}
|
324
324
|
}
|
325
325
|
}
|
@@ -363,7 +363,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
363
363
|
title: 'JR is Great',
|
364
364
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
365
365
|
links: {
|
366
|
-
author: {type: 'people', id: '3'}
|
366
|
+
author: {linkage: {type: 'people', id: '3'}}
|
367
367
|
}
|
368
368
|
},
|
369
369
|
{
|
@@ -371,7 +371,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
371
371
|
title: 'Ember is Great',
|
372
372
|
body: 'Ember is the greatest thing since unsliced bread.',
|
373
373
|
links: {
|
374
|
-
author: {type: 'people', id: '3'}
|
374
|
+
author: {linkage: {type: 'people', id: '3'}}
|
375
375
|
}
|
376
376
|
}
|
377
377
|
]
|
@@ -395,7 +395,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
395
395
|
Title: 'JR is Great',
|
396
396
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
397
397
|
links: {
|
398
|
-
author: {type: 'people', id: '3'}
|
398
|
+
author: {linkage: {type: 'people', id: '3'}}
|
399
399
|
}
|
400
400
|
},
|
401
401
|
{
|
@@ -403,7 +403,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
403
403
|
title: 'Ember is Great',
|
404
404
|
BODY: 'Ember is the greatest thing since unsliced bread.',
|
405
405
|
links: {
|
406
|
-
author: {type: 'people', id: '3'}
|
406
|
+
author: {linkage: {type: 'people', id: '3'}}
|
407
407
|
}
|
408
408
|
}
|
409
409
|
]
|
@@ -422,7 +422,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
422
422
|
title: 'JR is Great',
|
423
423
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
424
424
|
links: {
|
425
|
-
author: {type: 'people', id: '3'}
|
425
|
+
author: {linkage: {type: 'people', id: '3'}}
|
426
426
|
}
|
427
427
|
}
|
428
428
|
}
|
@@ -440,7 +440,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
440
440
|
title: 'JR is Great',
|
441
441
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
442
442
|
links: {
|
443
|
-
author: {type: 'people', id: '3'}
|
443
|
+
author: {linkage: {type: 'people', id: '3'}}
|
444
444
|
}
|
445
445
|
}
|
446
446
|
}
|
@@ -457,7 +457,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
457
457
|
title: 'JR is Great',
|
458
458
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
459
459
|
links: {
|
460
|
-
author: {type: 'people', id: '3'}
|
460
|
+
author: {linkage: {type: 'people', id: '3'}}
|
461
461
|
}
|
462
462
|
}
|
463
463
|
}
|
@@ -475,7 +475,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
475
475
|
subject: 'JR is Great',
|
476
476
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
477
477
|
links: {
|
478
|
-
author: {type: 'people', id: '3'}
|
478
|
+
author: {linkage: {type: 'people', id: '3'}}
|
479
479
|
}
|
480
480
|
}
|
481
481
|
}
|
@@ -493,8 +493,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
493
493
|
title: 'JR is Great',
|
494
494
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
495
495
|
links: {
|
496
|
-
author: {type: 'people', id: '3'},
|
497
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
496
|
+
author: {linkage: {type: 'people', id: '3'}},
|
497
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
498
498
|
}
|
499
499
|
}
|
500
500
|
}
|
@@ -515,8 +515,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
515
515
|
title: 'JR is Great',
|
516
516
|
body: 'JSONAPIResources is the greatest thing since unsliced bread.',
|
517
517
|
links: {
|
518
|
-
author: {type: 'people', id: '3'},
|
519
|
-
tags: [{type: 'tags', id:
|
518
|
+
author: {linkage: {type: 'people', id: '3'}},
|
519
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
520
520
|
}
|
521
521
|
}
|
522
522
|
}
|
@@ -537,8 +537,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
537
537
|
title: 'JR is Great!',
|
538
538
|
body: 'JSONAPIResources is the greatest thing since unsliced bread!',
|
539
539
|
links: {
|
540
|
-
author: {type: 'people', id: '3'},
|
541
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
540
|
+
author: {linkage: {type: 'people', id: '3'}},
|
541
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
542
542
|
}
|
543
543
|
},
|
544
544
|
include: 'author,author.posts',
|
@@ -564,8 +564,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
564
564
|
type: 'posts',
|
565
565
|
title: 'A great new Post',
|
566
566
|
links: {
|
567
|
-
section: {type: 'sections', id: "#{javascript.id}"},
|
568
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
567
|
+
section: {linkage: {type: 'sections', id: "#{javascript.id}"}},
|
568
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
569
569
|
}
|
570
570
|
},
|
571
571
|
include: 'tags'
|
@@ -583,6 +583,23 @@ class PostsControllerTest < ActionController::TestCase
|
|
583
583
|
|
584
584
|
def test_update_remove_links
|
585
585
|
set_content_type_header!
|
586
|
+
put :update,
|
587
|
+
{
|
588
|
+
id: 3,
|
589
|
+
data: {
|
590
|
+
id: '3',
|
591
|
+
type: 'posts',
|
592
|
+
title: 'A great new Post',
|
593
|
+
links: {
|
594
|
+
section: {linkage: {type: 'sections', id: 1}},
|
595
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
596
|
+
}
|
597
|
+
},
|
598
|
+
include: 'tags'
|
599
|
+
}
|
600
|
+
|
601
|
+
assert_response :success
|
602
|
+
|
586
603
|
put :update,
|
587
604
|
{
|
588
605
|
id: 3,
|
@@ -680,7 +697,7 @@ class PostsControllerTest < ActionController::TestCase
|
|
680
697
|
type: 'posts',
|
681
698
|
id: 3,
|
682
699
|
links: {
|
683
|
-
tags: {typ: 'bad link', idd: 'as'}
|
700
|
+
tags: {linkage: {typ: 'bad link', idd: 'as'}}
|
684
701
|
}
|
685
702
|
}
|
686
703
|
}
|
@@ -707,6 +724,24 @@ class PostsControllerTest < ActionController::TestCase
|
|
707
724
|
assert_match /Invalid Links Object/, response.body
|
708
725
|
end
|
709
726
|
|
727
|
+
def test_update_other_has_many_links_linkage_nil
|
728
|
+
set_content_type_header!
|
729
|
+
put :update,
|
730
|
+
{
|
731
|
+
id: 3,
|
732
|
+
data: {
|
733
|
+
type: 'posts',
|
734
|
+
id: 3,
|
735
|
+
links: {
|
736
|
+
tags: {linkage: nil}
|
737
|
+
}
|
738
|
+
}
|
739
|
+
}
|
740
|
+
|
741
|
+
assert_response :bad_request
|
742
|
+
assert_match /Invalid Links Object/, response.body
|
743
|
+
end
|
744
|
+
|
710
745
|
def test_update_relationship_has_one_singular_param_id_nil
|
711
746
|
set_content_type_header!
|
712
747
|
ruby = Section.find_by(name: 'ruby')
|
@@ -1054,8 +1089,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
1054
1089
|
id: 3,
|
1055
1090
|
title: 'A great new Post QWERTY',
|
1056
1091
|
links: {
|
1057
|
-
section: {type: 'sections', id: "#{javascript.id}"},
|
1058
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
1092
|
+
section: {linkage: {type: 'sections', id: "#{javascript.id}"}},
|
1093
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
1059
1094
|
}
|
1060
1095
|
},
|
1061
1096
|
{
|
@@ -1063,8 +1098,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
1063
1098
|
id: 16,
|
1064
1099
|
title: 'A great new Post ASDFG',
|
1065
1100
|
links: {
|
1066
|
-
section: {type: 'sections', id: "#{javascript.id}"},
|
1067
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
1101
|
+
section: {linkage: {type: 'sections', id: "#{javascript.id}"}},
|
1102
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
1068
1103
|
}
|
1069
1104
|
}
|
1070
1105
|
],
|
@@ -1131,8 +1166,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
1131
1166
|
id: 3,
|
1132
1167
|
title: 'A great new Post ASDFG',
|
1133
1168
|
links: {
|
1134
|
-
section: {type: 'sections', id: "#{javascript.id}"},
|
1135
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
1169
|
+
section: {linkage: {type: 'sections', id: "#{javascript.id}"}},
|
1170
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
1136
1171
|
}
|
1137
1172
|
},
|
1138
1173
|
{
|
@@ -1140,8 +1175,8 @@ class PostsControllerTest < ActionController::TestCase
|
|
1140
1175
|
id: 8,
|
1141
1176
|
title: 'A great new Post QWERTY',
|
1142
1177
|
links: {
|
1143
|
-
section: {type: 'sections', id: "#{javascript.id}"},
|
1144
|
-
tags: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]
|
1178
|
+
section: {linkage: {type: 'sections', id: "#{javascript.id}"}},
|
1179
|
+
tags: {linkage: [{type: 'tags', id: 3}, {type: 'tags', id: 4}]}
|
1145
1180
|
}
|
1146
1181
|
}
|
1147
1182
|
]}
|
@@ -1385,8 +1420,8 @@ class ExpenseEntriesControllerTest < ActionController::TestCase
|
|
1385
1420
|
transaction_date: '2014/04/15',
|
1386
1421
|
cost: 50.58,
|
1387
1422
|
links: {
|
1388
|
-
employee: {type: 'people', id: '3'},
|
1389
|
-
iso_currency: {type: 'iso_currencies', id: 'USD'}
|
1423
|
+
employee: {linkage: {type: 'people', id: '3'}},
|
1424
|
+
iso_currency: {linkage: {type: 'iso_currencies', id: 'USD'}}
|
1390
1425
|
}
|
1391
1426
|
},
|
1392
1427
|
include: 'iso_currency',
|
@@ -1414,8 +1449,8 @@ class ExpenseEntriesControllerTest < ActionController::TestCase
|
|
1414
1449
|
transactionDate: '2014/04/15',
|
1415
1450
|
cost: 50.58,
|
1416
1451
|
links: {
|
1417
|
-
employee: {type: 'people', id: '3'},
|
1418
|
-
isoCurrency: {type: 'iso_currencies', id: 'USD'}
|
1452
|
+
employee: {linkage: {type: 'people', id: '3'}},
|
1453
|
+
isoCurrency: {linkage: {type: 'iso_currencies', id: 'USD'}}
|
1419
1454
|
}
|
1420
1455
|
},
|
1421
1456
|
include: 'isoCurrency',
|
@@ -1443,8 +1478,8 @@ class ExpenseEntriesControllerTest < ActionController::TestCase
|
|
1443
1478
|
'transaction-date' => '2014/04/15',
|
1444
1479
|
cost: 50.58,
|
1445
1480
|
links: {
|
1446
|
-
employee: {type: 'people', id: '3'},
|
1447
|
-
'iso-currency' => {type: 'iso_currencies', id: 'USD'}
|
1481
|
+
employee: {linkage: {type: 'people', id: '3'}},
|
1482
|
+
'iso-currency' => {linkage: {type: 'iso_currencies', id: 'USD'}}
|
1448
1483
|
}
|
1449
1484
|
},
|
1450
1485
|
include: 'iso-currency',
|
@@ -1772,7 +1807,7 @@ class Api::V1::PostsControllerTest < ActionController::TestCase
|
|
1772
1807
|
title: 'JR - now with Namespacing',
|
1773
1808
|
body: 'JSONAPIResources is the greatest thing since unsliced bread now that it has namespaced resources.',
|
1774
1809
|
links: {
|
1775
|
-
writer: {type: 'writers', id: '3'}
|
1810
|
+
writer: { linkage: {type: 'writers', id: '3'}}
|
1776
1811
|
}
|
1777
1812
|
}
|
1778
1813
|
}
|
@@ -108,10 +108,12 @@ class RequestTest < ActionDispatch::IntegrationTest
|
|
108
108
|
'id' => '3',
|
109
109
|
'title' => 'A great new Post',
|
110
110
|
'links' => {
|
111
|
-
'tags' =>
|
112
|
-
|
113
|
-
|
114
|
-
|
111
|
+
'tags' => {
|
112
|
+
'linkage' => [
|
113
|
+
{type: 'tags', id: 3},
|
114
|
+
{type: 'tags', id: 4}
|
115
|
+
]
|
116
|
+
}
|
115
117
|
}
|
116
118
|
}
|
117
119
|
}.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
|
@@ -125,10 +127,12 @@ class RequestTest < ActionDispatch::IntegrationTest
|
|
125
127
|
'posts' => {
|
126
128
|
'title' => 'A great new Post',
|
127
129
|
'links' => {
|
128
|
-
'tags' =>
|
129
|
-
|
130
|
-
|
131
|
-
|
130
|
+
'tags' => {
|
131
|
+
'linkage' => [
|
132
|
+
{type: 'tags', id: 3},
|
133
|
+
{type: 'tags', id: 4}
|
134
|
+
]
|
135
|
+
}
|
132
136
|
}
|
133
137
|
}
|
134
138
|
}.to_json, "CONTENT_TYPE" => "application/json"
|
@@ -144,7 +148,7 @@ class RequestTest < ActionDispatch::IntegrationTest
|
|
144
148
|
'title' => 'A great new Post',
|
145
149
|
'body' => 'JSONAPIResources is the greatest thing since unsliced bread.',
|
146
150
|
'links' => {
|
147
|
-
'author' => {type: 'people', id: '3'}
|
151
|
+
'author' => {'linkage' => {type: 'people', id: '3'}}
|
148
152
|
}
|
149
153
|
}
|
150
154
|
}.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
|
@@ -191,10 +195,12 @@ class RequestTest < ActionDispatch::IntegrationTest
|
|
191
195
|
'id' => '3',
|
192
196
|
'title' => 'A great new Post',
|
193
197
|
'links' => {
|
194
|
-
'tags' =>
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
+
'tags' => {
|
199
|
+
'linkage' => [
|
200
|
+
{type: 'tags', id: 3},
|
201
|
+
{type: 'tags', id: 4}
|
202
|
+
]
|
203
|
+
}
|
198
204
|
}
|
199
205
|
}
|
200
206
|
}.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
|
@@ -210,10 +216,12 @@ class RequestTest < ActionDispatch::IntegrationTest
|
|
210
216
|
'id' => '3',
|
211
217
|
'title' => 'A great new Post',
|
212
218
|
'links' => {
|
213
|
-
'tags' =>
|
214
|
-
|
215
|
-
|
216
|
-
|
219
|
+
'tags' => {
|
220
|
+
'linkage' => [
|
221
|
+
{type: 'tags', id: 3},
|
222
|
+
{type: 'tags', id: 4}
|
223
|
+
]
|
224
|
+
}
|
217
225
|
}
|
218
226
|
}
|
219
227
|
}.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
|
@@ -228,7 +236,7 @@ class RequestTest < ActionDispatch::IntegrationTest
|
|
228
236
|
'type' => 'posts',
|
229
237
|
'title' => 'A great new Post',
|
230
238
|
'links' => {
|
231
|
-
'author' => {type: 'people', id: '3'}
|
239
|
+
'author' => {'linkage' => {type: 'people', id: '3'}}
|
232
240
|
}
|
233
241
|
}
|
234
242
|
}.to_json, "CONTENT_TYPE" => JSONAPI::MEDIA_TYPE
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jsonapi-resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.0.
|
4
|
+
version: 0.3.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Gebhardt
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|