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.