Sha256: eff01204e9af8abf61c96d5a9b86a251b208d341ed2680c0209b477fef9b557a
Contents?: true
Size: 1.62 KB
Versions: 12
Compression:
Stored size: 1.62 KB
Contents
module Praxis module Extensions module FieldExpansion extend ActiveSupport::Concern included do Praxis::ActionDefinition.send(:include, ActionDefinitionExtension) end def expanded_fields @expansion ||= request.action.expanded_fields(self.request, self.media_type) end module ActionDefinitionExtension extend ActiveSupport::Concern def expanded_fields(request, media_type) use_fields = self.params && self.params.attributes.key?(:fields) use_view = self.params && self.params.attributes.key?(:view) # Determine what, if any, fields to display. fields = if use_fields request.params.fields.fields else true end # Determine the view that COULD be applicable. view = if use_view && (view_name = request.params.view) media_type.views[view_name] else media_type.views[:default] end expandable = if fields == true # We want to show ALL of the available fields. # This can never be applied to the type (it's likely infinitely recursive). # So use view_name determimed above. view else # We want to show SOME of fields available on a view or type. if use_view && request.params.view # Use the requested view. view else # Use the type. media_type end end Praxis::FieldExpander.expand(expandable,fields) end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems