2010-02-05 2 views
6

Ich sah dies on a blog today, und ich dachte, endlich! Schienen haben etwas wie HQL oder Linq. Ähm oder nicht. Ich konnte nichts darüber finden.Was könnte das sein: Neue active record verkettbare Abfragesprache, die auf relationaler Algebra basiert?

Was ich wirklich wissen will: kann ich vergessen, wie die Tabellen heißen und nur die Objektnamen verwenden? Kann ich Join-Syntax endlich vergessen? Das würde ich gerne tun, bevor ich anfange alles andere zu vergessen (Lebensziele).

Antwort

2

Soweit ich verstehe, bedeutet dies, dass Sie Ihre komplexen Abfragen schreiben können nicht als

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

aber lesbare Weise

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

Lesen Sie das auch. Warum ist das gut? –

+2

Einer der Vorteile davon ist, dass es den Ausdruck nicht bewertet, bis Sie nach dem Inhalt fragen. Das führt also KEINE SQL aus, bis Sie darüber iterieren. Es wird Caching viel einfacher machen. – jonnii

+0

Danke @jonnii, interessant –

0

Sie können mehr darüber lesen here. Ich kenne LINQ nicht besonders gut, aber ich glaube, dass LINQ der von Djangos ORM verwendeten Query ähnlich ist. Wie dem auch sei, der Kernpunkt besteht darin, dass die Query-Schnittstelle in Active Record eher der von Django entspricht, die sie zuvor war. Viele der älteren Abfragemethoden auf "niedriger Ebene" sind veraltet und werden in späteren Versionen entfernt.

+0

Ich hatte diesen Artikel tatsächlich gesehen, aber die Frage ist: so? Sie haben sich sehr verändert. Gibt es etwas Gutes daraus? –

+0

Nun, wenn du denkst, dass eine verkettbare Abfragesprache eine gute Sache ist, dann, ja, etwas Gutes kommt hier raus. – mipadi

+0

Entschuldigung, was ist der Unterschied zwischen der Verkettung von Abfragen und der Ausführung von Abfragen aus den zurückgegebenen ActiveRecords, wie wir es vorher getan haben? –

1

verkettbare Abfragen mit lazy evaluation und der AREL Syntax:

Dadurch können Sie verschiedene Bereiche schreiben Bedingungen darstellen und dann mischen und zuordnen und sie miteinander verketten ... in dem Wissen, dass die Abfrage tatsächlich nicht ausgeführt wird bis die Ausgabe wird benötigt ('faule Auswertung').

Die Syntax von AREL ist viel näher an der Standard-SQL-Syntax als an der vorherigen "Rails" -Syntax, so dass es für die mit SQL vertrauten Benutzer einfacher zu verwenden und zu erkennen und zu pflegen ist.

+0

Danke. Wenn du deiner Antwort Links hinzufügen willst, wäre das toll. Auch: sind Leute eigentlich Verwenden Sie dies? Beispiele? –