Rails - Учитывая @Comments - как получить 2-й до последнего комментария без повторного подключения БД - PullRequest
20 голосов
/ 16 января 2011

с учетом @comments, которые могут содержать 1 или более записей. Как получить 2-ой к последнему комментарию?

Спасибо

Ответы [ 5 ]

30 голосов
/ 16 января 2011

Полагаю, это также будет называться предпоследней записью:

@comments[-2]

Вот документы 1 на интересный индексный оператор Руби.


1. Рубиисты, обратите внимание, как я это связал. Если вы удалите версию из своих ссылок на ruby-doc, ссылка будет прочной и свежей.
9 голосов
/ 26 ноября 2013

С любым массивом Ruby вы можете указать любой диапазон или определенный индекс, например, если вы хотите, чтобы каждый комментарий от второго самого старого до второго самого нового вы могли сделать следующим образом:

@comments[1..-2]

И чтобы получить только второй до последнего:

@comments[-2]

Документация для Ruby Array # range

В Rails, если вам нужны последние два комментария, вы можете сделать это, что вернет массив последних двух:

@comments.last(2)

Документация для ActiveRecord :: FinderMethods

7 голосов
/ 24 июня 2016

может содержать 1 или более записей

Этот вопрос старый, но для людей, приходящих к нему сейчас ...

Другие решения вернут ноль, если есть только одна запись. Если вы хотите быть уверены, что вернули запись, используйте:

@comments.last(2)[0]
3 голосов
/ 16 января 2011
@comments[-2]

Это почти то же самое, что и ваш последний вопрос.

1 голос
/ 16 января 2011
@comments = Comment.all         #Gather all comments from DB, filter as necessary.
@comments[-2]                   #Second to last comment in array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...