From a728749eb0d18cc057f17e901bf4052d032dde0c Mon Sep 17 00:00:00 2001 From: Fabian Mersch Date: Wed, 16 Nov 2016 17:27:27 +0100 Subject: [PATCH 1/2] make serialization_context available in link --- lib/active_model_serializers/adapter/json_api.rb | 2 +- lib/active_model_serializers/adapter/json_api/link.rb | 5 +++-- .../adapter/json_api/relationship.rb | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/active_model_serializers/adapter/json_api.rb b/lib/active_model_serializers/adapter/json_api.rb index 3d241e349..d01d9cb11 100644 --- a/lib/active_model_serializers/adapter/json_api.rb +++ b/lib/active_model_serializers/adapter/json_api.rb @@ -467,7 +467,7 @@ def relationships_for(serializer, requested_associations, include_slice) # }.reject! {|_,v| v.nil? } def links_for(serializer) serializer._links.each_with_object({}) do |(name, value), hash| - result = Link.new(serializer, value).as_json + result = Link.new(serializer, value, instance_options).as_json hash[name] = result if result end end diff --git a/lib/active_model_serializers/adapter/json_api/link.rb b/lib/active_model_serializers/adapter/json_api/link.rb index 64e15071a..00b24b67a 100644 --- a/lib/active_model_serializers/adapter/json_api/link.rb +++ b/lib/active_model_serializers/adapter/json_api/link.rb @@ -41,11 +41,12 @@ class JsonApi class Link include SerializationContext::UrlHelpers - def initialize(serializer, value) + def initialize(serializer, value, adapter_options) @_routes ||= nil # handles warning # actionpack-4.0.13/lib/action_dispatch/routing/route_set.rb:417: warning: instance variable @_routes not initialized @object = serializer.object @scope = serializer.scope + @context = adapter_options[:serialization_context] # Use the return value of the block unless it is nil. if value.respond_to?(:call) @value = instance_eval(&value) @@ -76,7 +77,7 @@ def as_json protected - attr_reader :object, :scope + attr_reader :object, :scope, :context end end end diff --git a/lib/active_model_serializers/adapter/json_api/relationship.rb b/lib/active_model_serializers/adapter/json_api/relationship.rb index 0d34cf937..a9b70a32f 100644 --- a/lib/active_model_serializers/adapter/json_api/relationship.rb +++ b/lib/active_model_serializers/adapter/json_api/relationship.rb @@ -48,7 +48,7 @@ def data_for(association) def links_for(association) association.links.each_with_object({}) do |(key, value), hash| - result = Link.new(parent_serializer, value).as_json + result = Link.new(parent_serializer, value, serializable_resource_options).as_json hash[key] = result if result end end From a6a8f53cadc1205b19f0ead41ab5c3f2d03bed10 Mon Sep 17 00:00:00 2001 From: Fabian Mersch Date: Thu, 17 Nov 2016 14:57:03 +0100 Subject: [PATCH 2/2] serlization_context: add accesssor for url_helpers --- lib/active_model_serializers/serialization_context.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_model_serializers/serialization_context.rb b/lib/active_model_serializers/serialization_context.rb index 9ef604f2e..b02893c4a 100644 --- a/lib/active_model_serializers/serialization_context.rb +++ b/lib/active_model_serializers/serialization_context.rb @@ -21,7 +21,7 @@ def default_url_options end end - attr_reader :request_url, :query_parameters, :key_transform + attr_reader :request_url, :query_parameters, :key_transform, :url_helpers def initialize(*args) options = args.extract_options!