Este é um jeito realmente útil de fazer um Find
em Rails. Abaixo está uma model Task
que procura por tarefas que ainda não foram completadas (p.e. a coluna complete
é 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
Há um jeito melhor de fazer isso usando find_by_all
. Substitua
@tasks = Task.find(:all, :conditions => ['complete = ?', false])
por
@tasks = Task.find_all_by_complete(false)
Se você somente quer achar uma Task
então use find_by
, para achar a última tarefa incompleta, a linha
@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')
se torna
@task = Task.find_by_complete(false, :order => 'created_at DESC')
O método find_by
aceita o parâmetro order
assim como o método find
aceita.