Method: Scimitar::ActiveRecordBackedResourcesController#index

Defined in:
app/controllers/scimitar/active_record_backed_resources_controller.rb

#indexObject

GET (list)



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/controllers/scimitar/active_record_backed_resources_controller.rb', line 26

def index
  query = if params[:filter].blank?
    self.storage_scope()
  else
    attribute_map = storage_class().new.scim_queryable_attributes()
    parser        = ::Scimitar::Lists::QueryParser.new(attribute_map)

    parser.parse(params[:filter])
    parser.to_activerecord_query(self.storage_scope())
  end

  pagination_info = scim_pagination_info(query.count())

  page_of_results = query
    .order(@id_column => :asc)
    .offset(pagination_info.offset)
    .limit(pagination_info.limit)
    .to_a()

  super(pagination_info, page_of_results) do | record |
    record_to_scim(record)
  end
end