2015-05-25 4 views
0

У меня есть модель сообщений с целым столбцом с названием «позиция», чтобы вручную их упорядочить. На странице показа сообщений у меня есть раздел «больше сообщений» с @more_posts.Поиск «следующих сообщений» на основе целого числа

@more_posts = @comment.posts.where("posts.id NOT IN (?)", @post.id).order("position").limit(2) 

Это дает мне две уникальные посты, но я не уверен, как получить следующие две должности вместо двух самых высоких позиций. Скажем, ток post.id 2, я хотел бы @more_posts получить сообщения 3 и 4.

(я использую PostgreSQL является производство и SQLite в развитии.)

+0

Что такое ваше имя клиента DB? Mysql? –

+0

Возможный дубликат [Rails лучший способ получить предыдущий и следующий активные объекты записи] (http://stackoverflow.com/questions/25665804/rails-best-way-to-get-previous-and-next-active-record- объект), на который я случайно ответил. –

+0

Я проверю это, спасибо! – user2759575

ответ

0
@more_posts = @comment.posts.where(id: [@post.id + 1, @post.id + 2]) 

или

@more_posts = @comment.posts.where("id > ?", @post.id).limit(2) 

Если вы заказываете положением считают:

@more_posts = @comment.posts.order(position: :asc).where("position > ?", @post.position).limit(2) 
+0

Ничто не работает и ничего не возвращает. Поскольку я заказываю по позициям, а не id, я переключил их так: @ comment.posts.where ("position>?", @ Post.position) .limit (2) – user2759575

Смежные вопросы