2012-08-31 2 views
0

에 find_each와 나는 표시 할 기록의 거대한 세트를 가지고와 find_each를 사용하여 쿼리를 분해 한 :는 쪽수를 매기다 활성 기록

- Syslog.find_each(:batch_size => 2000) do |s| 
    = s.something 

문제는 페이지 매김을 소개하기 위해 노력하고있다. 나는 시도 했어 ._ 페이지 번호 (3.0.3) :

- Syslog.paginate(:page => params[:page], :per_page => 10).find_each(:conditions => { }, :batch_size => 2000) do |s| 

이렇게 많은 레코드를 페이지 매깅하는 방법이 있습니까? PAGINATE에 같은 will_paginate 3.0.3를 사용 : 작업

+0

이 작동해야합니다. 오류 메시지가 나타 납니까? 당신이보기에 will_patginate @collection을 사용하고 있습니까? – Prem

+0

= will_paginate (@collection)가 오류를 남겨 둡니다 : 정의되지 않은 메소드'total_pages ' – simonmorley

+0

@syslogs와 같은 변수에 쿼리를 저장하고 "will_paginate (@syslogs)"에서 쿼리를 사용하려고 시도 했습니까? – Prem

답변

0

한다 Syslog.paginate(:page => params[:page], :per_page =>10).where(conditions: "your condition")


아래, 나는 실제 솔루션이이 일을 알게되었다 어디에 사용하여 화재 쿼리에

1

보십시오 :

Model.accessible_by(current_ability).page(params[:page]).order('id DESC') 

will_paginate wiki에서 발견했습니다.

이것을 사용하면 find_each 또는 일괄 처리 크기가 필요하지 않으며 수십만 개의 레코드가 빠르게로드됩니다.

처음 도움을 주신 @prem에게 감사드립니다. 지원을위한 플러스 하나.

+0

촬영 한 시간 동안 당황하지 마십시오. 귀하의 방법, 동일한 결과를 사용 - 오류, 아니 매김 ... 아주 이상한! – simonmorley

+0

app에 will_paginate gm을 추가하고 colelction을 변수로 가져 와서 사용하십시오. – Prem

+0

find_each를 컨트롤러로 이동하면 no block given (yield) 오류가 발생합니다. 그래서 나는 당분간 볼 수있게 움직였다. WP gem은 어디에서나 작동합니다. 컨트롤러 자체에서 해결해야 할 오류가 무엇이든간에 – simonmorley