2012-06-27 5 views
1

다음/이전 레코드를 찾기위한 동일한 솔루션을 많이 보았지만 다른 경우가 있습니다.rails next/prev record

내 DB에 어떤 게시물이 있습니다 (6, 5, 4, 3, 2, 1) 그들이 잘 접착 게시물에 대한 default_scope 있습니다 default_scope :order => 'sticky DESC' 4의 게시물이 잘 접착 될 경우, 그 첫 번째 장소에있을 것 (4 , 6, 5, 3, 2, 1 ...)

이 같은 다음 게시물 검색 할 수 있습니다 경우 record.where('created_at > ?', @post.created_at).first를, 그것은 3,하지 nil 것, 무엇보다도 먼저이 created_at으로 검색하고 그때까지 주문 때문에 sticky 칼럼

default_scope으로 어떻게 첫 번째/다음 소식을 찾을 수 있습니까?

+0

http://sqlfiddle.com/#!2/abe38 예 – Robin

답변

1

"다음"레코드를 찾을 때 여전히 기본 범위를 고려하고 싶습니까? 네, 당신과 같이 기본 범위를 변경하는 것을 고려 할 수 있다면

그렇지 않을 경우,

Post.unscoped.where(...).first 

를 사용

default_scope :order => ['sticky DESC', 'created_at ASC'] 

을 일반 메모에서, 가능하면 방지해야 기본 범위를 사용하여. 그들은 나중에 유지 관리를위한 악몽이 될 수 있습니다. 필요한 경우에만 범위를 사용하는 것이 좋습니다.

관련 문제