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.