Skip to content

Commit 099eb60

Browse files
authored
Merge branch 'dev' into add_meta
2 parents dd71bc1 + 4012507 commit 099eb60

3 files changed

Lines changed: 26 additions & 3 deletions

File tree

lib/fast_jsonapi/serialization_core.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def record_hash(record, fieldset, params = {})
7272
temp_hash[:links] = links_hash(record, params) if data_links.present?
7373
temp_hash
7474
end
75-
record_hash[:relationships] = record_hash[:relationships].merge(relationships_hash(record, uncachable_relationships_to_serialize, params)) if uncachable_relationships_to_serialize.present?
75+
record_hash[:relationships] = record_hash[:relationships].merge(relationships_hash(record, uncachable_relationships_to_serialize, fieldset, params)) if uncachable_relationships_to_serialize.present?
7676
record_hash[:meta] = meta_hash(record, params) if meta_to_serialize.present?
7777
record_hash
7878
else
@@ -130,7 +130,7 @@ def get_included_records(record, includes_list, known_included_objects, fieldset
130130

131131
included_objects.each do |inc_obj|
132132
if remaining_items(items)
133-
serializer_records = serializer.get_included_records(inc_obj, remaining_items(items), known_included_objects, fieldsets)
133+
serializer_records = serializer.get_included_records(inc_obj, remaining_items(items), known_included_objects, fieldsets, params)
134134
included_records.concat(serializer_records) unless serializer_records.empty?
135135
end
136136

spec/lib/object_serializer_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,23 @@ class BlahSerializer
310310
end
311311
end
312312

313+
context 'when serializing included, params should be available in any serializer' do
314+
subject(:serializable_hash) do
315+
options = {}
316+
options[:include] = [:"actors.awards"]
317+
options[:params] = { include_award_year: true }
318+
MovieSerializer.new(movie, options).serializable_hash
319+
end
320+
let(:actor) { movie.actors.first }
321+
let(:award) { actor.awards.first }
322+
let(:year) { award.year }
323+
324+
it 'passes params to deeply nested includes' do
325+
expect(year).to_not be_blank
326+
expect(serializable_hash[:included][0][:attributes][:year]).to eq year
327+
end
328+
end
329+
313330
context 'when is_collection option present' do
314331
subject { MovieSerializer.new(resource, is_collection_options).serializable_hash }
315332

spec/shared/contexts/movie_context.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ def awards
8080
a.id = i
8181
a.title = "Test Award #{i}"
8282
a.actor_id = id
83+
a.year = 1990 + i
8384
end
8485
end
8586
end
@@ -110,7 +111,7 @@ def state
110111
end
111112

112113
class Award
113-
attr_accessor :id, :title, :actor_id
114+
attr_accessor :id, :title, :actor_id, :year
114115
end
115116

116117
class State
@@ -225,6 +226,11 @@ class AgencySerializer
225226
class AwardSerializer
226227
include FastJsonapi::ObjectSerializer
227228
attributes :id, :title
229+
attribute :year, if: Proc.new { |record, params|
230+
params[:include_award_year].present? ?
231+
params[:include_award_year] :
232+
false
233+
}
228234
belongs_to :actor
229235
end
230236

0 commit comments

Comments
 (0)