Подтвердить что ты не робот

Rails - Учитывая @Comments - как получить второй-последний комментарий без повторного использования db

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

Спасибо

4b9b3361

Ответ 1

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

@comments[-2]

Вот документы 1 для интересного оператора индекса Ruby.


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

Ответ 2

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

@comments[1..-2]

И чтобы получить только второе:

@comments[-2]

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

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

@comments.last(2)

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

Ответ 3

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

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

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

@comments.last(2)[0]

Ответ 4

@comments[-2]

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

Ответ 5

@comments = Comment.all         #Gather all comments from DB, filter as necessary.
@comments[-2]                   #Second to last comment in array