Sha256: a34a7584784c9b2a2ba248102cd99c48c4e820aa38f72de547c5e1e7a8b3ea56
Contents?: true
Size: 1.25 KB
Versions: 8
Compression:
Stored size: 1.25 KB
Contents
module JSONAPIonify::Api module Resource::Builders class RelationshipBuilder < BaseBuilder include IdentityHelper delegate :type, to: :resource, prefix: true delegate :request, :includes, to: :context attr_reader :relationship, :related_resource, :context, :instance def initialize(resource, relationship:, context:, instance:) super(resource) @relationship = relationship @context = context @instance = instance @related_resource = resource.relationship(relationship.name) end def build Objects::Relationship.new.tap do |rel| rel[:links] = related_resource.build_links(build_url) rel[:data] = build_data if includes.present? end end private def build_data case relationship when Relationship::Many resolution.map do |child| relationship.build_resource_identifier(child) end when Relationship::One relationship.build_resource_identifier resolution end end def resolution instance.instance_exec( relationship.name, instance, context, &relationship.resolve ) end end end end
Version data entries
8 entries across 8 versions & 1 rubygems