json_api_client 1.6.3 → 1.6.4
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 +15 -0
- data/lib/json_api_client/resource.rb +16 -4
- data/lib/json_api_client/version.rb +1 -1
- 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: 43ad8115fe9360a602c120c6f4989ee54760d6a3
|
4
|
+
data.tar.gz: 9709b02b48e2c8b2295bd76b8620fcb1efaad487
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f7c487d82b18df80d0b7ca0a076028ea9b0b5b6eeb9e7a154f83a95d3a7f0af6af418418b06168dd860fd5c1225ec9a064603660354bfae3c42d7524d8bccb8
|
7
|
+
data.tar.gz: c4d8967b2a2e85a8c9ba486290e1f860551e83eab7e3022b3fc8d408ef2f3bd204ec56cd57e6e20c60cf72c6dfbddcf433281b4b45777fd00a6c49226080e6e9
|
data/README.md
CHANGED
@@ -39,14 +39,29 @@ MyApi::Article.where(author_id: 1).all
|
|
39
39
|
MyApi::Person.where(name: "foo").order(created_at: :desc).includes(:preferences, :cars).all
|
40
40
|
|
41
41
|
u = MyApi::Person.new(first_name: "bar", last_name: "foo")
|
42
|
+
u.new_record?
|
43
|
+
# => true
|
42
44
|
u.save
|
43
45
|
|
46
|
+
u.new_record?
|
47
|
+
# => false
|
48
|
+
|
44
49
|
u = MyApi::Person.find(1).first
|
45
50
|
u.update_attributes(
|
46
51
|
a: "b",
|
47
52
|
c: "d"
|
48
53
|
)
|
49
54
|
|
55
|
+
u.persisted?
|
56
|
+
# => true
|
57
|
+
|
58
|
+
u.destroy
|
59
|
+
|
60
|
+
u.destroyed?
|
61
|
+
# => true
|
62
|
+
u.persisted?
|
63
|
+
# => false
|
64
|
+
|
50
65
|
u = MyApi::Person.create(
|
51
66
|
a: "b",
|
52
67
|
c: "d"
|
@@ -315,6 +315,7 @@ module JsonApiClient
|
|
315
315
|
def initialize(params = {})
|
316
316
|
params = params.symbolize_keys
|
317
317
|
@persisted = nil
|
318
|
+
@destroyed = nil
|
318
319
|
self.links = self.class.linker.new(params.delete(:links) || {})
|
319
320
|
self.relationships = self.class.relationship_linker.new(self.class, params.delete(:relationships) || {})
|
320
321
|
self.attributes = self.class.default_attributes.merge(params)
|
@@ -355,14 +356,26 @@ module JsonApiClient
|
|
355
356
|
#
|
356
357
|
# @return [Boolean]
|
357
358
|
def persisted?
|
358
|
-
!!@persisted && has_attribute?(self.class.primary_key)
|
359
|
+
!!@persisted && !destroyed? && has_attribute?(self.class.primary_key)
|
360
|
+
end
|
361
|
+
|
362
|
+
# Mark the record as destroyed
|
363
|
+
def mark_as_destroyed!
|
364
|
+
@destroyed = true
|
365
|
+
end
|
366
|
+
|
367
|
+
# Whether or not this record has been destroyed to the database previously
|
368
|
+
#
|
369
|
+
# @return [Boolean]
|
370
|
+
def destroyed?
|
371
|
+
!!@destroyed
|
359
372
|
end
|
360
373
|
|
361
374
|
# Returns true if this is a new record (never persisted to the database)
|
362
375
|
#
|
363
376
|
# @return [Boolean]
|
364
377
|
def new_record?
|
365
|
-
!persisted?
|
378
|
+
!persisted? && !destroyed?
|
366
379
|
end
|
367
380
|
|
368
381
|
# When we represent this resource as a relationship, we do so with id & type
|
@@ -449,8 +462,7 @@ module JsonApiClient
|
|
449
462
|
fill_errors
|
450
463
|
false
|
451
464
|
else
|
452
|
-
|
453
|
-
self.relationships.attributes.clear
|
465
|
+
mark_as_destroyed!
|
454
466
|
self.relationships.last_result_set = nil
|
455
467
|
_clear_cached_relationships
|
456
468
|
true
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Ching
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|