homeASCIIcasts

2: Metodo find dinamico 

(view original Railscast)

Other translations: En Fr Es Kr Pl Pt

Other formats:

Written by Andrea Salicetti

Ecco un modo molto utile per eseguire una Find in Rails. Qui sotto c’è un modello Task che recupera i task che non completati (la cui colonna complete vale 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
  

C’è un modo migliore per ottenere lo stesso effetto con la find_by_all. E’ sufficiente sostituire

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

con

@tasks = Task.find_all_by_complete(false)

Se si vuole recuperare un solo Task, basta usare find_by, che recupera l’ultimo task incompleto. La linea

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

diventa dunque

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

Il metodo find_by accetta il parametro order proprio come il metodo find.