Ho due modelli in una relazione has_many tale che Log ha_molti elementi. Rails quindi imposta bene cose come: some_log.items
che restituisce tutti gli elementi associati a some_log. Se volessi ordinare questi elementi in base a un campo diverso nel modello Elementi c'è un modo per fare questo attraverso un costrutto simile, o se uno deve abbattere in qualcosa di simile:Rails ordina in modello associato
Item.find_by_log_id(:all,some_log.id => "some_col DESC")
Dal Rails 3.x, la sintassi named_scope è leggermente diversa. Viene ora chiamato usando "scope" invece di "named_scope" e utilizza le funzioni per definire la struttura dell'ambito. Ad esempio: "scope: ordered, order (" some_col DESC ")". –
In Rails 4 c'è di nuovo un altro approccio. L'ambito di associazione predefinito deve essere specificato come un lambda come 'has_many: items, -> {order (: some_col) .where (foo: 'bar')}' e, analogamente, gli scope nominati ora prendono uno scope lambda: nome_of_scope, -> {where (foo: 'bar')} '. L'ambito predefinito richiede un blocco: 'default_scope: {where (foo: 'bar')}' – Leo
Risposta superba. +1 – sscirrus