translated by Paweł Lenart
Jest to bardzo użyteczny sposób na wykonanie find
w Rails. Poniżej mamy przedstawiony model Task
, który szuka nieukończonych zadań (kolumna complete
ma być równa 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
Istnieje lepszy sposób na uzyskanie tego efektu za pomocą find_by_all
. Należy jedynie zamienić
@tasks = Task.find(:all, :conditions => ['complete = ?', false])
na
@tasks = Task.find_all_by_complete(false)
Jeżeli chcesz odszukać tylko jedno zadanie (Task
), użyj find_by
. Zatem, żeby znaleźć ostatnie nieukończone zadanie, linia
@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')
zostaje zamieniona na
@task = Task.find_by_complete(false, :order => 'created_at DESC')
Metoda find_by
przyjmuje parametr order
— tak, jak w przypadku metody find
.