Następny/poprzedni obiekt AR

Witam,

Pytanie jest proste (może nawet banalne): czy istnieje jakaś gotowa metoda, aby utworzyć funkcję “następny/poprzedni” element w widoku aplikacji?
Chodzi o to, że pobieram wszystkie elementy z bazy, i chciałbym móc się przełączać “previous/next”, natomiast nie mogę iterować po ID ponieważ ich liczba nie odpowiada liczbie elementów (np. luki po usuniętych obiektach).

Nie chciałbym wynajdywać od nowa koła, dlatego może istnieje gotowa metoda w API ActiveRecord?

ID do tablicy, i wtedy już łatwo, gotowej chyba nie ma, poza operacja na bazie danych z limitem, offset czy jak to tam zalezy od bazy

def show @post = Post.find(params[:id]) if @post @previous_post = Post.find(:first, :conditions => ["created_at < ?", @post.created_at], :order => "created_at DESC") @next_post = Post.find(:first, :conditions => ["created_at > ?", @post.created_at], :order => "created_at ASC") end end
idea, nietestowana. równie dobrze możesz po IDkach, cokolwiek, co Twoja baza danych potrafi sortować i jest unikalne

Proste pytanie, 2 odpowiedzi i żadna nie wspomina o de facto standardzie do stronicowania kolekcji obiektów will_paginate. (per_page = 1 aby wyświetlić tylko 1 obiekt na stronie)

a acts_as_list ?

  • dla will_paginate

Chodiaż nie zawsze. W sytuacji kiedy many:

GET /posts/:id

to raczej się nie nada.

baza, limity i offset to właśnie will_paginate no przynajmniej to miałem na myśli ;]

dodanie do modelu acts_as_list doda ci taką fukcjonalność. obiekty zostaną skolejkowane i będziesz mógł odczytać poprzedni/następny.