Class: JsonapiCompliable::Scoping::ExtraFields
- Defined in:
- lib/jsonapi_compliable/scoping/extra_fields.rb
Overview
Apply logic when an extra field is requested. Useful for eager loading associations used to compute the extra field.
Given a Resource
class PersonResource < ApplicationResource
extra_field :net_worth do |scope|
scope.includes(:assets)
end
end
And a corresponding serializer:
class SerializablePerson < JSONAPI::Serializable::Resource
extra_attribute :net_worth do
@object.assets.sum(&:value)
end
end
When the user requests the extra field 'net_worth':
GET /people?extra_fields[people]=net_worth
The assets
will be eager loaded and the 'net_worth'
attribute will be present in the response. If this field is not explicitly
requested, none of this logic fires.
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#apply ⇒ Object
Loop through all requested extra fields.
Methods inherited from Base
#apply?, #apply_custom_scope, #apply_standard_scope, #initialize
Constructor Details
This class inherits a constructor from JsonapiCompliable::Scoping::Base
Instance Method Details
#apply ⇒ Object
Loop through all requested extra fields. If custom scoping logic is define for that field, run it. Otherwise, do nothing.
36 37 38 39 40 41 42 |
# File 'lib/jsonapi_compliable/scoping/extra_fields.rb', line 36 def apply each_extra_field do |callable| @scope = callable.call(@scope, resource.context) end @scope end |