module Graphiti::Extensions::ExtraAttribute
Only render a given attribute when the user specifically requests it. Useful for computationally-expensive attributes that are not required on every request.
This class handles the serialization, but you may also want to run code during scoping (for instance, to eager load associations referenced by this extra attribute. See (Resource.extra_field).
@example Basic Usage
# Will only be rendered on user request, ie # /people?extra_fields[people]=net_worth extra_attribute :net_worth
@example Eager Loading
class PersonResource < ApplicationResource # If the user requests the 'net_worth' attribute, make sure # 'assets' are eager loaded extra_field :net_worth do |scope| scope.includes(:assets) end end class SerializablePerson < Graphiti::Serializer # ... code ... extra_attribute :net_worth do @object.assets.sum(&:value) end end
@see Resource.extra_field
Public Class Methods
included(klass)
click to toggle source
# File lib/graphiti/extensions/extra_attribute.rb, line 36 def self.included(klass) klass.extend ClassMethods end