biorąc pod uwagę @comments, które mogą zawierać 1 lub więcej rekordów. Jak uzyskać komentarz od drugiego do ostatniego?Railsy - podane @Comments - jak uzyskać drugi do ostatniego komentarza bez ponownego wprowadzania db
Dzięki
biorąc pod uwagę @comments, które mogą zawierać 1 lub więcej rekordów. Jak uzyskać komentarz od drugiego do ostatniego?Railsy - podane @Comments - jak uzyskać drugi do ostatniego komentarza bez ponownego wprowadzania db
Dzięki
Przypuszczam, że również nazwać rekord przedostatni:
@comments[-2]
Here are the docs do interesującej operatora indeksu Ruby.
@comments[-2]
Jest niemal tak samo jak ostatnie pytanie.
@comments = Comment.all #Gather all comments from DB, filter as necessary.
@comments[-2] #Second to last comment in array
Z każdej tablicy Ruby, można podać dowolny zakres lub konkretnego indeksu, na przykład jeśli chciał każdy komentarz z drugim najstarszym na drugi Ostatnio można zrobić tak:
@comments[1..-2]
i uzyskać tylko przedostatnia:
@comments[-2]
Dokumentacja Ruby Array#range
w szynach, jeśli chciałeś dwie ostatnie komentarze, a następnie Yo u może ten, który zwraca tablicę z dwóch ostatnich zrobić:
@comments.last(2)
Dokumentacja dla ActiveRecord::FinderMethods
+1 dla 'last (2)'. Działa to dobrze, gdy jest używany bezpośrednio na modelu, bez konieczności wstępnego ładowania wszystkich rekordów do pamięci, np. 'Comment.last (2)'. –
może zawierać 1 lub więcej rekordów
To pytanie jest stary, ale dla ludzi dochodzimy do tego teraz ...
Inne rozwiązania zwrócą zero, jeśli istnieje tylko jeden rekord. Jeśli chcesz mieć pewność, że zwrócisz wykorzystanie rekordu:
@comments.last(2)[0]
To źle, jeśli masz ogromną bazę danych, zabijesz pamięć i zajmie to zbyt dużo czasu. Możesz to zrobić w konsoli, jeśli masz małego DB –