4 Stimmen

ActiveRecord-Modelle und deren Beziehungen manuell instanziieren?

Wenn ich T-SQL (oder eine gespeicherte Prozedur) habe, die Datensätze aus mehreren Tabellen zurückgibt (vielleicht mit DBI), gibt es eine Möglichkeit für mich, die ActiveRecord-Modelle und ihre Verbindungen manuell zu instanziieren? Offensichtlich geht es mir hier um die Leistung der Datenbank. Ich möchte in der Lage sein, meine eigene Objekthierarchie (Modelle und ihre Beziehungen) aufzubauen, aber wenn ich fertig bin, möchte ich, dass sich jedes Modell normal verhält. Das heißt, ich hoffe, dass dies ohne einen Hack möglich ist, der dazu führen könnte, dass sich meine Struktur seltsam verhält.

EDITAR:

Dies ist ein wenig konstruiert, aber es zeigt, wie eine Abfrage Daten aus n Ebenen zurückgeben kann (wobei "n" nur praktische Grenzen hat) und alles in einem einzigen Aufruf an die Datenbank zurückgibt:

SELECT * FROM customers 
  WHERE id = 1;

SELECT * FROM orders 
  WHERE customer_id = 1;

SELECT * FROM lineitems 
  WHERE order_id IN (
  SELECT id FROM orders 
    WHERE customer_id = 1
  );

Wenn ich dann alle Datensätze habe, kann ich die Assoziationen einfach selbst zuordnen. Das Problem bei der Durchführung dieser über ActiveRecord und :include ist, dass es die Datenbank mehrere Male statt nur einmal getroffen wird - was mehr anstrengend ist, wie "n" erhöht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X