Esta es una forma muy útil de hacer un find
en Rails. Debajo, vemos un modelo Task
que busca tareas que no han sido completadas. (ej.: la columna complete
es 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
Hay una mejor forma de obtener esto y es haciendo find_by_all
. Solamente tendremos que reemplazar
@tasks = Task.find(:all, :conditions => ['complete = ?', false])
por
@tasks = Task.find_all_by_complete(false)
Si solo se quiere encontrar un Task
, entonces usamos find_by
; por lo que para encontrar la última tarea incompleta, la siguiente línea
@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')
quedaría como
@task = Task.find_by_complete(false, :order => 'created_at DESC')
El método find_by
toma el parámetro order
, igual que como lo hace el método find
.