Ecco un modo molto utile per eseguire una Find
in Rails. Qui sotto c’è un modello Task
che recupera i task che non completati (la cui colonna complete
vale false
).
class TaskController < ApplicationController
def incomplete
@tasks = Task.find(:all, :conditions => ['complete = ?', false])
end
def last_incomplete
@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')
end
end
C’è un modo migliore per ottenere lo stesso effetto con la find_by_all
. E’ sufficiente sostituire
@tasks = Task.find(:all, :conditions => ['complete = ?', false])
con
@tasks = Task.find_all_by_complete(false)
Se si vuole recuperare un solo Task
, basta usare find_by
, che recupera l’ultimo task incompleto. La linea
@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')
diventa dunque
@task = Task.find_by_complete(false, :order => 'created_at DESC')
Il metodo find_by
accetta il parametro order
proprio come il metodo find
.