키셋 페이지네이션
GitLab 프로젝트에서 HAML 기반 뷰 및 REST API에 키셋 페이지네이션 라이브러리를 사용하는 방법을 설명합니다.
키셋 페이지네이션 라이브러리는 GitLab 프로젝트 내 HAML 기반 뷰 및 REST API에서 사용할 수 있습니다. 키셋 페이지네이션과 오프셋 기반 페이지네이션과의 비교는 페이지네이션 가이드라인 페이지에서 확인할 수 있습니다. API 개요 # 개요 # Rails 컨트롤러에서 ActiveRecord 를 사용한 키셋 페이지네이션: cursor = params[:cursor] # this is nil when the first page is requested paginator = Project.order(:created_at).keyset_paginate(cursor: cursor, per_page: 20) paginator.each do |project| puts project.name # prints maximum 20 projects end 사용법 # 이 라이브러리는 ActiveRecord 릴레이션에 #keyset_paginate 라는 단일 메서드를 추가합니다. 이는 Kaminari의 paginate 메서드와 정신적으로는 유사하지만(구현 방식은 다릅니다). 키셋 페이지네이션은 단순한 ActiveRecord 쿼리에 대해서는 별도 설정 없이도 동작합니다: 하나의 칼럼을 기준으로 정렬. 두 개의 칼럼을 기준으로 정렬하되, 마지막 칼럼이 기본 키인 경우. 라이브러리는 nullable 칼럼과 non-distinct 칼럼을 감지하고, 이를 기반으로 기본 키를 사용하여 추가 정렬을 적용합니다. 키셋 페이지네이션은 고유한 정렬 기준 값을 필요로 하기 때문입니다: Project.order(:created_at).keyset_paginate.records # ORDER BY created_at, id Project.order(:name).keyset_paginate.records # ORDER BY name, id Project.order(:created_at, id: :desc).keyset_paginate.records # ORDER BY created_at, id Project.order(created_at: :asc, id: :desc).keyset_paginate.records # ORDER BY created_at, id DESC keyset_paginate 메서드는 로드된 레코드와 다양한 페이지 요청을 위한 추가 정보를 포함하는 특별한 페이지네이터 객체 를 반환합니다. 이 메서드는 다음 키워드 인수를 허용합니다: cursor - 다음 페이지를 요청하기 위한 인코딩된 정렬 칼럼 값 ( nil 일 수 있음). per_page - 페이지당 로드할 레코드 수 (기본값 20). keyset_order_options - 키셋 페이지네이션 데이터베이스 쿼리를 구성하기 위한 추가 옵션. 성능 섹션의 UNION 쿼리 예시를 참조하세요 (선택 사항). 페이지네이터 객체는 다음 메서드를 제공합니다: records - 현재 페이지의 레코드를 반환합니다. has_next_page? - 다음 페이지가 있는지 여부를 알려줍니다. has_previous_page? -