2011-01-16 1 views

risposta

26

Suppongo che sarebbe anche essere chiamato il record penultima:

@comments[-2] 

Here are the docs all'operatore indice interessante di Ruby.


1. Rubyists, nota come ho collegato questo. Se si estrae la versione dai collegamenti ruby-doc, il riferimento sarà duraturo e recente.

3
@comments[-2] 

Questo è più o meno lo stesso come la tua ultima domanda.

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

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 –

8

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

+2

+1 per 'last (2)'. Funziona bene se usato direttamente sul modello senza dover precaricare tutti i record in memoria, come 'Comment.last (2)'. –

4

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]