Sha256: 4ac5c03b83b91a80fca1b73e88fe92393a2afd43e593f9baf832794cf91b8ec0

Contents?: true

Size: 1023 Bytes

Versions: 8

Compression:

Stored size: 1023 Bytes

Contents

module JSONAPIonify::Api
  module Resource::Builders
    class RelationshipsBuilder < FieldsBuilder

      delegate :relationships, to: :resource, prefix: true

      private

      def build_default
        resource_relationships.each_with_object(Objects::Relationships.new) do |relationship, attrs|
          unless relationship.hidden_for_action?(action_name)
            attrs[relationship.name] = build_relationship(relationship)
          end
        end
      end

      def build_sparce
        resource_fields.each_with_object(Objects::Relationships.new) do |field, attrs|
          field = field.to_sym
          relationship = resource_relationships.find { |rel| rel.name == field }
          attrs[field] = build_relationship(relationship) if relationship
        end
      end

      def build_relationship(relationship)
        RelationshipBuilder.build(
          resource,
          relationship: relationship,
          context: context,
          instance: instance
        )
      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
jsonapionify-0.11.11 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.10 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.9 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.8 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.7 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.6 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.5 lib/jsonapionify/api/resource/builders/relationships_builder.rb
jsonapionify-0.11.0 lib/jsonapionify/api/resource/builders/relationships_builder.rb