2013-11-27 3 views
0

한 페이지에 2 개의 레코드를 인쇄하려고합니다. 약 513 개의 데이터베이스 레코드가 있습니다. 나는 ruby에서 range.step(2).each do ...과 같은 것을 사용할 수 있음을 알고있다. 레일과 활성 레코드 콜렉션을 사용하는 것이 가능한가? 같은레일은 한 번에 2 레코드를 액세스합니다.

:

Users.step(2).each_with_index ... 

    do something with User(i) 
    do something with User (i+1) 
    blah blah 
... 
. 

end 
+0

시도해 보셨습니까? – sevenseacat

+0

#

답변

2

ActiveRecord 관계가 배열로 취급 할 수있다, 그래서 그들은 또한 Enumerable#each_slice 방법은 구현 :

User.all.each_slice(2) do |user1, user2| 
    # code goes here 
end 
+0

감사합니다. 그게 정확히 내가 뭘 찾고 있었는지 –

1

무엇 User.find_each(batch_size: 2) 대해를? #<User:0x007fa92ec82f60>
#<User:0x007fa92ec82b78>

SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 2
#<User:0x007fa92ec82f60>
#<User:0x007fa92ec82b78>
SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 2
.........
레일 find_each 그는 하시다 uld는 모든 기록을 2 조각으로 얻습니다.

+0

감사합니다 친구, 나는 배치 생각,하지만 그것은 일반적으로 1000 + 레코드에 사용됩니다 그래서 모범 사례 –

+0

500 항목 규범하지만 10000 서버 거짓말을 기록합니다. –

관련 문제