homeASCIIcasts

2: Dynamiczne metody find_by 

(view original Railscast)

Other translations: En It Fr Es Kr Pt

Other formats:

Written 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 byc 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.