2011-10-04 7 views
5

Finalmente he comenzado a actualizar mis aplicaciones de Rails desde 2.3.8 a 3.1.0. Estaba viendo RailsCasts (http://railscasts.com/episodes/202-active-record-queries-in-rails-3) sobre las consultas de Active Record.¿Por qué la relación de Active Record no se devuelve en la consola?

Cuando abro la consola (carriles c) y hago consulta similar a esto:

articles = Article.order("name") 

En lugar de devolver las relaciones Active Record, veo la consulta ejecutada. ¿Qué estoy haciendo mal aquí?

rieles versión: 3.1.0

RVM en 1.9.2

Gracias por su ayuda!


EDITAR: He agregado una captura de pantalla del ejemplo. enter image description here

Respuesta

7

Usted está haciendo todo bien. Verá la consulta ejecutada porque la consola invoca el método inspect en la salida. Trate articles = Article.order("name").class

+0

Gracias, que parece ser el problema. He agregado una captura de pantalla del ejemplo. ¿Tiene alguna idea de por qué el método de inspección no se invoca en el video de ejemplo? – hade

+0

Hombre, luché con esto la primera vez que intenté jugar con Arel. – jaydel

8

La clase ActiveRecord Relación está configurado para realizar la consulta cuando un método de consulta como .all, .last, .first, ... se invoca. La lista de métodos también incluye .inspect, el mismo método invocado por la consola para mostrar la representación del valor de retorno.

Por esta razón, le parece que el objeto nunca es una relación, porque siempre ve el resultado de la consulta.

Pero si usted examina la clase de objeto, se dará cuenta de que es una relación

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

¡Gracias por la respuesta! Elegí la respuesta de Bohdan porque la publicó un poco antes. + – hade

Cuestiones relacionadas