Class: Core::Endpoint::BasicHandler::Associations::HasMany::Handler
- Inherits:
-
Core::Endpoint::BasicHandler
- Object
- Core::Endpoint::BasicHandler
- Core::Endpoint::BasicHandler::Associations::HasMany::Handler
- Includes:
- Paged
- Defined in:
- app/api/core/endpoint/basic_handler/associations/has_many/handler.rb
Instance Method Summary collapse
-
#initialize(association, options) ⇒ Handler
constructor
A new instance of Handler.
- #read(request, path) ⇒ Object
- #results_per_page ⇒ Object
-
#separate(associations, _) ⇒ Object
rubocop:todo Metrics/AbcSize, Metrics/MethodLength.
Constructor Details
#initialize(association, options) ⇒ Handler
Returns a new instance of Handler.
5 6 7 8 |
# File 'app/api/core/endpoint/basic_handler/associations/has_many/handler.rb', line 5 def initialize(association, , &) super(&) @association, @options = association, end |
Instance Method Details
#read(request, path) ⇒ Object
55 56 57 58 59 60 61 |
# File 'app/api/core/endpoint/basic_handler/associations/has_many/handler.rb', line 55 def read(request, path) association_details_for(request) do |association_io| association = association_from(request) eager_loaded = association_io.eager_loading_for(association).include_uuid nested_action(request, path, page_of_results(eager_loaded, path.first.try(:to_i) || 1, association)) { super } end end |
#results_per_page ⇒ Object
25 26 27 |
# File 'app/api/core/endpoint/basic_handler/associations/has_many/handler.rb', line 25 def results_per_page @options[:per_page] || super end |
#separate(associations, _) ⇒ Object
rubocop:todo Metrics/AbcSize, Metrics/MethodLength
69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/api/core/endpoint/basic_handler/associations/has_many/handler.rb', line 69 def separate(associations, _) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength associations[@options[:json].to_s] = lambda do |object, , stream| stream.block(@options[:json].to_s) do |nested_stream| association = object.send(@association) nested_stream.attribute('size', association.count) nested_stream.block('actions') do |action_stream| actions(count_of_pages(association), .merge(target: object)).map do |action, url| action_stream.attribute(action, url) end end end end end |