module Fields::Serializer::ActionController
Public Instance Methods
render_json_fields(query, optimize_query: true, **options)
click to toggle source
Render the result of an ActiveRecord::Relation query including only the fields specified
@param [ActiveRecord::Relation] query - The query to render in json @param [Boolean] optimize_query - Add outer joins to the query to prevent a db query per serialized object. @option options [Array] :fields - The list of fields to return in json api syntax @option options [Class] :model_class - The model class of the objects to be queried to optimize db hits. @option options [Hash] :options - Any other valid option to render method.
# File lib/fields/serializer/action_controller.rb, line 15 def render_json_fields(query, optimize_query: true, **options) fields = options.delete(:fields) model_class = options.delete(:model_class) if fields.present? if optimize_query includes = model_class.fields_to_includes(fields) query = query.includes(*Array.wrap(includes)) if includes end options.merge!(each_serializer: model_class.fields_serializer(fields), include: "**") end render options.merge!(json: query.to_a) end