Module: Core::Endpoint::BasicHandler::Associations::HasMany

Included in:
Core::Endpoint::BasicHandler
Defined in:
app/api/core/endpoint/basic_handler/associations/has_many.rb

Instance Method Summary collapse

Instance Method Details

#has_many(name, options) { ... } ⇒ Void

Defines a has_many relationship which will be exposed via the v1 api

Parameters:

  • name (Symbol)

    The name of the association to expose via the api

  • options (Hash)

    Option parameters for the association

Options Hash (options):

  • :to (String)

    Used to generate the url eg to: 'wells' results in resource_uuid/wells

  • :json (String)

    The key to identify the association in the json

  • :scoped (String)

    Scopes to apply to the association, separated by a '.'

  • :per_page (Integer)

    The number of resources per page when accessed via the association <optional>

  • :include (Array, Hash)

    Include options on the association

Yields:

  • Use block to define additional actions on the association.

Returns:

  • (Void)

14
15
16
17
# File 'app/api/core/endpoint/basic_handler/associations/has_many.rb', line 14

def has_many(name, options, &block)
  class_handler = Class.new(Handler).tap { |handler| self.class.const_set(name.to_s.camelize, handler) }
  register_handler(options[:to], class_handler.new(name, options, &block))
end