Module: Apill::ProcessableResource
- Defined in:
- lib/apill/processable_resource.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #api_filterable_attributes ⇒ Object
- #api_filterable_parameters ⇒ Object
- #api_resource ⇒ Object
- #api_resource_params ⇒ Object
Class Method Details
.included(base) ⇒ Object
21 22 23 |
# File 'lib/apill/processable_resource.rb', line 21 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#api_filterable_attributes ⇒ Object
61 62 63 |
# File 'lib/apill/processable_resource.rb', line 61 def api_filterable_attributes [] end |
#api_filterable_parameters ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/apill/processable_resource.rb', line 43 def api_filterable_parameters @api_filterable_parameters ||= begin filter_params = params.fetch(:filter, {}) scalar_params = [:query] array_params = {} api_filterable_attributes.each do |api_filterable_attribute| if filter_params[api_filterable_attribute].class == Array array_params[api_filterable_attribute] = [] else scalar_params << api_filterable_attribute end end scalar_params << array_params end end |
#api_resource ⇒ Object
25 26 27 28 29 |
# File 'lib/apill/processable_resource.rb', line 25 def api_resource @resource ||= Resource::Model.new( resource: public_send(self.class.plural_resource_name), parameters: api_resource_params) end |
#api_resource_params ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/apill/processable_resource.rb', line 31 def api_resource_params params.permit(:sort, page: %i{ number size offset limit cursor }, filter: api_filterable_parameters) end |