27 Aug
duccio

duccio il 27 August 2009 parla di Rails Snippet

Rails: default_scope

Ricordate quando usavamo il plugin scoped_access per aggiungere condizioni di default ad ogni query effettuata, poi sono stati introdotti i named_scope, favolosi.

Con i named_scope potete aggiungere dei metodi di classe per filtrare e recuperare elementi dal database, ad esempio se volete tutti i contenuti pubblicati:

    1 class Contenuti < ActiveRecord::Base
    2   named_scope :pubblicati, :conditions => {:published_at => "IS NOT NULL"}
    3 end

Se però volete i contenuti pubblicati ma sempre e solo quelli scritti da un certo autore, dovreste fare un nuovo named scope:

    1 class Contenuti < ActiveRecord::Base
    2   named_scope :pubblicati, :conditions => {:published_at => "IS NOT NULL"}
    3   named_scope :solo_di_duccio, :conditions => {:author_name => "duccio"}
    4 end
    5 

e dopo fare Content.pubblicati.solo_di_duccio.

Ma se voglio sempre e solo quelli di duccio posso definire default_scope:

    1 class Contenuti < ActiveRecord::Base
    2   default_scope :conditions => {:author_name => "duccio"}, :order => 'created_at ASC'
    3 end
    4 


Scrivi un commento