lib/graphiti/serializer.rb in graphiti-1.0.beta.11 vs lib/graphiti/serializer.rb in graphiti-1.0.beta.12
- old
+ new
@@ -20,10 +20,16 @@
klass.class_eval do
extend JSONAPI::Serializable::Resource::ConditionalFields
end
end
+ def as_jsonapi(*)
+ super.tap do |hash|
+ strip_relationships!(hash) if strip_relationships?
+ end
+ end
+
# Temporary fix until fixed upstream
# https://github.com/jsonapi-rb/jsonapi-serializable/pull/102
def requested_relationships(fields)
@_relationships
end
@@ -33,8 +39,23 @@
if @resource.respond_to?(id, true)
@resource.send(id, *args, &blk)
else
super
end
+ end
+
+ private
+
+ def strip_relationships!(hash)
+ hash[:relationships].select! do |name, payload|
+ payload.has_key?(:data)
+ end
+ hash.delete(:relationships) if hash[:relationships].empty?
+ end
+
+ def strip_relationships?
+ return false unless Graphiti.config.links_on_demand
+ params = Graphiti.context[:object].params || {}
+ [false, nil, 'false'].include?(params[:links])
end
end
end