2010-02-05 9 views
6

Vi esto on a blog today, ¡y pensé, finalmente! Rails tendrá algo así como HQL o Linq. Um, o no. No pude encontrar nada sobre esto.¿Qué podría ser esto: Nuevo lenguaje de consulta encadenable Active Record construido sobre álgebra relacional?

Lo que realmente quiero saber: ¿podré olvidarme de cómo se llaman las tablas y usar solamente los nombres de los objetos? ¿Puedo olvidarme finalmente de la sintaxis de unión? Me gustaría hacer eso antes de empezar a olvidar todo lo demás (objetivos de vida).

Respuesta

2

Por lo que yo entiendo, esto significa que usted puede escribir sus consultas complejas no como

Object.find(:all, :conditions = > { :limit => 10, :offset => 5 } 

pero mucho más fácil de leer

Object.all.limit(10).offset(5) 
+0

Lea eso también. ¿Por qué es eso bueno? –

+2

Uno de los beneficios de esto es que no evalúa la expresión hasta que solicite los contenidos. Entonces eso no ejecutará CUALQUIER SQL hasta que itere sobre él. Va a hacer que el almacenamiento en caché sea mucho más simple. – jonnii

+0

Gracias @jonnii, –

0

Puedes leer más al respecto here. No estoy muy familiarizado con LINQ, pero creo que LINQ es algo similar a la interfaz de consulta utilizada por el ORM de Django. En cualquier caso, lo esencial es que la interfaz de consulta en Active Record es más parecida a la de Django que antes. Muchos de los métodos de consulta de "bajo nivel" más antiguos están en desuso y se eliminarán en versiones posteriores.

+0

Realmente había visto ese artículo, pero la pregunta es: ¿entonces? Han cambiado mucho. ¿Algo bueno sale de esto? –

+0

Bueno, si crees que un lenguaje de consulta encadenable es algo bueno, entonces sí, algo bueno está saliendo de esto. – mipadi

+0

Disculpe, ¿cuál es la diferencia entre encadenar consultas y realizar consultas fuera de los valores de ActiveRecords, como lo hicimos antes? –

1

consultas en cadena con la evaluación perezosa y la sintaxis AREL:

Esto le permite escribir varios ámbitos que representan las condiciones y luego mezclarlos y encadenarlos ... sabiendo que la consulta no se ejecutará hasta la salida es necesaria ('evaluación diferida').

La sintaxis de AREL está mucho más cerca de la sintaxis sql estándar en lugar de la sintaxis anterior 'rieles' por lo que es más fácil de usar y reconocer y mantener para aquellos familiarizados con SQL.

+0

Gracias. Si quisieras agregar algún enlace a tu respuesta, sería genial. usando esto? Ejemplos? –

Cuestiones relacionadas