homeASCIIcasts

2: Métodos find_by Dinâmicos 

(view original Railscast)

Other translations: En It Fr Es Kr Pl

Other formats:

Written by Gutem Nunes

Este é um jeito realmente útil de fazer um Find em Rails. Abaixo está uma model Task que procura por tarefas que ainda não foram completadas (p.e. a coluna complete é 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

Há um jeito melhor de fazer isso usando find_by_all. Substitua

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

por

@tasks = Task.find_all_by_complete(false)

Se você somente quer achar uma Task então use find_by, para achar a última tarefa incompleta, a linha

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

se torna

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

O método find_by aceita o parâmetro order assim como o método find aceita.