class ActiveModelSerializers::Adapter::JsonApi::Relationship
Attributes
association[R]
parent_serializer[R]
serializable_resource_options[R]
Public Class Methods
new(parent_serializer, serializable_resource_options, association)
click to toggle source
{jsonapi.org/format/#document-resource-object-related-resource-links Document Resource Object
Related Resource Links} {jsonapi.org/format/#document-links Document Links} {jsonapi.org/format/#document-resource-object-linkage Document Resource Relationship
Linkage} {jsonapi.org/format/#document-meta Document Meta}
# File lib/active_model_serializers/adapter/json_api/relationship.rb, line 9 def initialize(parent_serializer, serializable_resource_options, association) @parent_serializer = parent_serializer @association = association @serializable_resource_options = serializable_resource_options end
Public Instance Methods
as_json()
click to toggle source
# File lib/active_model_serializers/adapter/json_api/relationship.rb, line 15 def as_json hash = {} if association.options[:include_data] hash[:data] = data_for(association) end links = links_for(association) hash[:links] = links if links.any? meta = meta_for(association) hash[:meta] = meta if meta hash[:meta] = {} if hash.empty? hash end
Private Instance Methods
data_for(association)
click to toggle source
# File lib/active_model_serializers/adapter/json_api/relationship.rb, line 38 def data_for(association) serializer = association.serializer if serializer.respond_to?(:each) serializer.map { |s| ResourceIdentifier.new(s, serializable_resource_options).as_json } elsif (virtual_value = association.options[:virtual_value]) virtual_value elsif serializer && serializer.object ResourceIdentifier.new(serializer, serializable_resource_options).as_json end end
links_for(association)
click to toggle source
# File lib/active_model_serializers/adapter/json_api/relationship.rb, line 49 def links_for(association) association.links.each_with_object({}) do |(key, value), hash| result = Link.new(parent_serializer, value).as_json hash[key] = result if result end end
meta_for(association)
click to toggle source
# File lib/active_model_serializers/adapter/json_api/relationship.rb, line 56 def meta_for(association) meta = association.meta meta.respond_to?(:call) ? parent_serializer.instance_eval(&meta) : meta end