dato i messaggi che possono contenere 1 o più record. Come ottengo il penultimo commento?Rails - Dati @Comments - come ottenere il penultimo commento senza reinserire il db
Grazie
dato i messaggi che possono contenere 1 o più record. Come ottengo il penultimo commento?Rails - Dati @Comments - come ottenere il penultimo commento senza reinserire il db
Grazie
Suppongo che sarebbe anche essere chiamato il record penultima:
@comments[-2]
Here are the docs all'operatore indice interessante di Ruby.
@comments[-2]
Questo è più o meno lo stesso come la tua ultima domanda.
@comments = Comment.all #Gather all comments from DB, filter as necessary.
@comments[-2] #Second to last comment in array
Con qualsiasi array Ruby, è possibile specificare qualsiasi intervallo o indice specifico, ad esempio se si voleva ogni commento dalla seconda più antica al secondo più recente si potrebbe fare come:
@comments[1..-2]
E per ottenere solo il secondo per durare:
@comments[-2]
Documentazione per Ruby Array#range
In Rails, se si voleva gli ultimi due commenti, poi yo u potrebbe fare questo, che restituisce un array degli ultimi due:
@comments.last(2)
Documentazione per ActiveRecord::FinderMethods
+1 per 'last (2)'. Funziona bene se usato direttamente sul modello senza dover precaricare tutti i record in memoria, come 'Comment.last (2)'. –
può contenere 1 o più record
Questa domanda è vecchia, ma per le persone venendo a questo ora ...
Le altre soluzioni restituiranno zero se c'è un solo record. Se si vuole essere sicuri di restituire un record, utilizzare:
@comments.last(2)[0]
Questo è un po 'sbagliato, se si dispone di un enorme database, esso cancellerà la memoria e richiederebbe troppo tempo. Puoi farlo nella console se hai un piccolo DB –