caprese 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/caprese/controller/concerns/persistence.rb +27 -5
- data/lib/caprese/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: 0ca4c84e5919ce00359d805fbbbfd4da7e26c769
|
4
|
+
data.tar.gz: bd3df0c2fc3a9f29f91c9577c18ebf9a48b9a9df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46b96f45c77864c3ae31ec75291a0ae9e1e4c3ce4480c952896c5a07751cd799678fe9d525237abb16ba8df485d76340232819cb390ab374916352fadbb32471
|
7
|
+
data.tar.gz: b8fad22479e137399a200458e706bf632c18dceda7be71b8e61fa3295381a773100fd232852d48639ca695df6449fbcb697c4589d775454adb878c10035ecdf0
|
data/CHANGELOG.md
CHANGED
@@ -18,3 +18,8 @@
|
|
18
18
|
## 0.3.3
|
19
19
|
|
20
20
|
* Depend on all route primary key URL params to be named `:id`, rather than `Caprese.config.resource_primary_key`
|
21
|
+
|
22
|
+
## 0.3.4
|
23
|
+
|
24
|
+
* Fix bug in processing of collection relationship data (5e21582)
|
25
|
+
* Fix bug in persisting of collection relationship data on create (1eb4720)
|
@@ -50,6 +50,8 @@ module Caprese
|
|
50
50
|
|
51
51
|
record.save!
|
52
52
|
|
53
|
+
persist_collection_relationships(record)
|
54
|
+
|
53
55
|
execute_after_create_callbacks(record)
|
54
56
|
execute_after_save_callbacks(record)
|
55
57
|
|
@@ -242,12 +244,12 @@ module Caprese
|
|
242
244
|
# @param [Hash,Array<Hash>] relationship_data the resource identifier data to use to find/build records
|
243
245
|
# @return [ActiveRecord::Base,Array<ActiveRecord::Base>] the record(s) for the relationship
|
244
246
|
def records_for_relationship(owner, permitted_params, relationship_name, relationship_data)
|
245
|
-
if relationship_data.is_a?(Array)
|
246
|
-
relationship_data.map do |relationship_data_item|
|
247
|
-
ref = record_for_relationship(owner, relationship_name, relationship_data_item
|
247
|
+
if relationship_data[:data].is_a?(Array)
|
248
|
+
relationship_data[:data].map do |relationship_data_item|
|
249
|
+
ref = record_for_relationship(owner, relationship_name, relationship_data_item)
|
248
250
|
|
249
|
-
if ref && contains_constructable_data?(relationship_data_item
|
250
|
-
assign_record_attributes(ref, permitted_params, relationship_data_item
|
251
|
+
if ref && contains_constructable_data?(relationship_data_item)
|
252
|
+
assign_record_attributes(ref, permitted_params, relationship_data_item)
|
251
253
|
end
|
252
254
|
|
253
255
|
ref
|
@@ -316,5 +318,25 @@ module Caprese
|
|
316
318
|
def contains_constructable_data?(resource_identifier)
|
317
319
|
[:attributes, :relationships].any? { |k| resource_identifier.key?(k) }
|
318
320
|
end
|
321
|
+
|
322
|
+
# Called in create, after the record is saved. When creating a new record, and assigning to it
|
323
|
+
# existing has_many association relation, the records in the relation will be pushed onto the
|
324
|
+
# appropriate target, but the relationship will not be persisted in their attributes until their
|
325
|
+
# owner is saved.
|
326
|
+
#
|
327
|
+
# This methods persists the collection relation(s) pushed onto the record's association target(s)
|
328
|
+
def persist_collection_relationships(record)
|
329
|
+
record.class.reflect_on_all_associations
|
330
|
+
.select { |ref| ref.collection? && record.association(ref.name).any? }
|
331
|
+
.map do |ref|
|
332
|
+
[
|
333
|
+
ref.has_inverse? ? ref.inverse_of.name : ref.options[:as],
|
334
|
+
record.association(ref.name).target
|
335
|
+
]
|
336
|
+
end
|
337
|
+
.to_h.each do |name, targets|
|
338
|
+
targets.each { |t| t.update name => record }
|
339
|
+
end
|
340
|
+
end
|
319
341
|
end
|
320
342
|
end
|
data/lib/caprese/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: caprese
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Landgrebe
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-02-
|
13
|
+
date: 2017-02-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: active_model_serializers
|