Rails - Учитывая @Comments - как получить второй-последний комментарий без повторного использования db
данные @comments, которые могут содержать 1 или более записей. Как получить от второго до последнего комментария?
Спасибо
Ответы
Ответ 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