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.