class Gearhead::Actions::Index
Attributes
gear[R]
request[R]
scope[R]
Public Class Methods
build(gear, request)
click to toggle source
# File lib/gearhead/actions/index.rb, line 6 def self.build(gear, request) new(gear, request).build end
new(gear, request)
click to toggle source
# File lib/gearhead/actions/index.rb, line 11 def initialize(gear, request) @gear = gear @request = request @collection = find_collection @serializer_options = {} end
Public Instance Methods
build()
click to toggle source
# File lib/gearhead/actions/index.rb, line 18 def build @collection = apply_includes @collection = apply_scope @collection = apply_query @collection = apply_pagination @collection = apply_serializer @collection.to_json end
Private Instance Methods
apply_includes()
click to toggle source
# File lib/gearhead/actions/index.rb, line 33 def apply_includes return @collection if @gear._gear_includes.nil? @collection.includes(@gear._gear_includes) end
apply_pagination()
click to toggle source
# File lib/gearhead/actions/index.rb, line 62 def apply_pagination return @collection unless @gear.paginate? paginator = ::Gearhead::Paginators::Paginator.paginate(@collection, self).call @collection = paginator.collection @serialization_options = paginator.serialization_options @collection end
apply_query()
click to toggle source
# File lib/gearhead/actions/index.rb, line 56 def apply_query return @collection unless params[:q].present? @collection.ransack(params[:q]).result end
apply_scope()
click to toggle source
# File lib/gearhead/actions/index.rb, line 38 def apply_scope return @collection unless valid_scope?(scope) if query = @gear._gear_defined_scopes[scope.to_sym].presence query.call(@collection) else @collection.send(scope) end end
apply_serializer()
click to toggle source
# File lib/gearhead/actions/index.rb, line 72 def apply_serializer @gear.collection_serializer.for(@collection, @gear.serializer_class, serialization_options) end
find_collection()
click to toggle source
# File lib/gearhead/actions/index.rb, line 29 def find_collection @gear.resource.all end
serialization_options()
click to toggle source
# File lib/gearhead/actions/index.rb, line 76 def serialization_options { links: { first: @serialization_options[:first_url], last: @serialization_options[:last_url], prev: @serialization_options[:prev_url], next: @serialization_options[:next_url] } } end
valid_scope?(scope)
click to toggle source
# File lib/gearhead/actions/index.rb, line 51 def valid_scope?(scope) return false if scope.nil? @gear._gear_defined_scopes.key?(scope.to_sym) end