2011-10-04 11 views
5

Ho finalmente iniziato l'aggiornamento delle mie app Rails dalla 2.3.8 alla 3.1.0. Stavo guardando RailsCasts (http://railscasts.com/episodes/202-active-record-queries-in-rails-3) sulle query di Active Record.Perché la relazione Active Record non viene restituita nella console?

Quando apro la console (rotaie c) e fare query simile a questo:

articles = Article.order("name") 

Invece di tornare rapporti record attivo, vedo la query eseguita. Cosa sto facendo di sbagliato qui? Versione

Rails: 3.1.0

RVM sulla 1.9.2

Grazie per il vostro aiuto!


EDIT: ho aggiunto uno screenshot dall'esempio. enter image description here

risposta

7

Stai facendo tutto bene. Viene visualizzata la query eseguita perché la console invoca il metodo inspect all'output. Prova articles = Article.order("name").class

+0

Grazie, che sembra essere il problema. Ho aggiunto uno screenshot dell'esempio. Hai idea del motivo per cui il metodo inspect non viene richiamato nel video di esempio? – hade

+0

Man, ho fatto fatica con questo la prima volta che ho provato a suonare con Arel. – jaydel

8

La classe di relazione ActiveRecord è configurata per eseguire la query quando viene richiamato un metodo di query come .all, .last, .first, .... L'elenco di metodi include anche .inspect, lo stesso metodo chiamato dalla console per visualizzare la rappresentazione del valore restituito.

Per questo motivo ti sembra che l'oggetto non sia mai una relazione, perché vedi sempre il risultato della query.

Ma se si ispezionare la classe di oggetti, si noterà che è un rapporto

Article.order("name").class 
# => ActiveRecord::Relation 
+0

Grazie per la risposta! Ho scelto la risposta di Bohdan perché l'ha pubblicata un po 'prima. + – hade