homeASCIIcasts

2: Méthode dynamique find_by  (view original Railscast)

Other translations: En It

Written by Geoffrey Roguelon

C’est un moyen vraiment utile de faire un Find dans Rails. Ci-dessous, vous avez un modèle Task qui recherche les tâches qui ne sont pas accomplies (C’est à dire : la colonne complete est à 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

Ceci est une meilleure façon de faire avec find_by_all. Remplacez :

@tasks = Task.find(:all, :conditions => ['complete = ?', false])

par

@tasks = Task.find_all_by_complete(false)

Si vous souhaitez trouver une tâche en utilisant find_by, pour trouver la dernière tâche incomplète. La ligne :

@task = Task.find(:first, :conditions => ['complete =?', false], :order => 'created_at DESC')

devient

@task = Task.find_by_complete(false, :order => 'created_at DESC')

La méthode find_by prend le paramètre order comme la méthode find.