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