Collection ordinata di un'associazione

Ciao ragazzi,

volevo sapere se c’è un modo rapido e veloce per riprendere la
collection di un’associazione già ordinata in base ad un dato specifico.

Mi spiego meglio illustrando un esempio:
io ho una rubrica dove ci sono più articoli. Questi articoli hanno un
attributo che mi dice se devono essere pubblicati o meno e la data di
creazione dello stesso.
Io vorrei semplicemente rirpendere tutti gli articoli dove lo
stato=pubblicato ordinati per data di creazione in maniera decrescente.

Se io facessi rubrica.articoli le condizioni sopra descritte non sono
rispettate in qquanto prenderei tutti gli articoli e basta associati a
quella determinata rubrica.

Accetto consigli.

Grazie

On 2/2/09 3:30 PM, Alessandro Del coco wrote:

stato=pubblicato ordinati per data di creazione in maniera decrescente.

Aggiungi una

has_many :articoli_pubblicati, :class_name => ‘Articoli’, :conditions =>
{ :stato => ‘pubblicato’ }, :order => ‘created_at desc’

Andrea

2009/2/2 Alessandro Del coco [email protected]:

stato=pubblicato ordinati per data di creazione in maniera decrescente.

Se io facessi rubrica.articoli le condizioni sopra descritte non sono
rispettate in qquanto prenderei tutti gli articoli e basta associati a
quella determinata rubrica.

puoi usare un named_scope, tipo:

articolo

class Article < ActiveRecord::Base
named_scope :ordinati, :order => ‘data_creazione DESC’

end

poi potrai usare rubrica.articles.ordinati

leggo che puoi anche scrivere:

class Rubrica < ActiveRecord::Base
has_many :articles, :order => ‘data_creazione DESC’
end

e così rubrica.articles li restituisce già ordinati.
però questa cosa non l’ho ancora provata.

2009/2/2 Alessandro Del coco [email protected]:

Sfortunatamente mi dice che non trova il metodo named_scope…che x
caso è stato introdotto con rails 2.2 (uso la 2.0)? o è un plug-in?

2.1

Grazie a entrambi…

@Pietro G.
Sfortunatamente mi dice che non trova il metodo named_scope…che x
caso è stato introdotto con rails 2.2 (uso la 2.0)? o è un plug-in?

Comunque la soluzione di Andrea Ciampi pare funzioni…

Grazie