Sha256: ed6a4a3e16f51d8eeca893aba97e76407e3cd66c6f392939de08fcaebfc6be39

Contents?: true

Size: 1.34 KB

Versions: 8

Compression:

Stored size: 1.34 KB

Contents

module JSONAPIonify::Api
  class Relationship::One < Relationship

    prepend_class do
      rel = self.rel
      remove_action :list, :create

      class << self
        undef_method :list
      end

      define_singleton_method(:show) do |content_type: nil, callbacks: true, &block|
        options = {
          content_type: content_type,
          callbacks:    callbacks,
          cacheable:    true,
          prepend:      'relationships'
        }
        define_action(:show, 'GET', **options, &block).response status: 200 do |context|
          context.response_object[:data] = build_resource_identifier(instance: context.instance)
          context.response_object.to_json
        end
      end

      define_singleton_method(:replace) do |content_type: nil, callbacks: true, &block|
        options = {
          content_type: content_type,
          callbacks:    callbacks,
          cacheable:    false,
          prepend:      'relationships'
        }
        define_action(:replace, 'PATCH', **options, &block).response status: 200 do |context|
          context.response_object[:data] = build_resource_identifier(instance: context.instance)
          context.response_object.to_json
        end
      end

      context :instance do |context|
        instance_exec rel.name, context.owner, context, &rel.resolve
      end

      show
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
jsonapionify-0.11.11 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.10 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.9 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.8 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.7 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.6 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.5 lib/jsonapionify/api/relationship/one.rb
jsonapionify-0.11.0 lib/jsonapionify/api/relationship/one.rb