-
- def get_page_items(items, includes)
- id_column = "#{items.table_name}.id"
- page_items = if params[:before]
- items.where("#{id_column} < ?", params[:before]).order(:id => :desc)
- elsif params[:after]
- items.where("#{id_column} > ?", params[:after]).order(:id => :asc)
- else
- items.order(:id => :desc)
- end
-
- page_items = page_items.limit(20)
- page_items = page_items.includes(includes)
- page_items = page_items.sort.reverse
-
- newer_items = page_items.count.positive? && items.exists?(["#{id_column} > ?", page_items.first.id])
- older_items = page_items.count.positive? && items.exists?(["#{id_column} < ?", page_items.last.id])
-
- [page_items, newer_items, older_items]
- end