class JsonapiCompliable::Util::RenderOptions
Generate the options we end up passing to {{jsonapi-rb.org jsonapi-rb}} @api private
Public Class Methods
generate(object, query_hash, overrides = {})
click to toggle source
# File lib/jsonapi_compliable/util/render_options.rb, line 6 def self.generate(object, query_hash, overrides = {}) resolved = object.respond_to?(:resolve) ? object.resolve : object fields = query_hash[:fields].dup extra_fields = query_hash[:extra_fields] # Ensure fields doesnt clobber extra fields extra_fields.each do |k,v| fields[k] = fields[k] + v if fields[k] end options = {} options[:class] = inferrer options[:include] = query_hash[:include] options[:jsonapi] = resolved options[:fields] = fields options.merge!(overrides) options[:meta] ||= {} options[:expose] ||= {} options[:expose][:extra_fields] = extra_fields if object.respond_to?(:resolve_stats) stats = object.resolve_stats options[:meta][:stats] = stats unless stats.empty? end options end
Private Class Methods
inferrer()
click to toggle source
# File lib/jsonapi_compliable/util/render_options.rb, line 35 def self.inferrer ::Hash.new do |h, k| names = k.to_s.split('::') klass = names.pop serializer_name = [*names, "Serializable#{klass}"].join('::') serializer = serializer_name.safe_constantize if serializer h[k] = serializer else raise Errors::MissingSerializer.new(k, serializer_name) end end end