2009-04-29 6 views
3

Was ist die beste Vorgehensweise, wo ich SQL-Abfragen in Rails platzieren sollte?Wo sollte ich SQL-Abfragen in Rails einfügen?

  • Soll ich die Methoden in Modellen zum Beispiel zu erstellen: find_all_public_items, wo ich die Such-Methoden mit allen Bedingungen bin mit, und dann mit ihnen in Controllern. So habe ich alle Abfragen an einem Ort, aber ich vermisse die Flexibilität, dass jede Anfrage genau auf die Bedürfnisse zugeschnitten sein sollte.

  • Sollte ich nur die Suche/find_by_sql in den Controllern verwenden - so erstelle ich nicht Tausende von Methoden, aber ich verliere die Kontrolle darüber, wie die Controller Daten aus der Datenbank saugen.

Antwort

6

Sie sollten sie in Ihre Modelle stecken. Vielleicht möchten Sie auch named scopes untersuchen.

+0

Der genannte Scopes-Mechanismus sieht ziemlich cool aus: kurze und süße Makro-Sache, um die Abfragen nur mit einem Hinweis auf die "Wo" -Klausel für die Notwendigkeit des Tages zu generieren. Vielen Dank. – Roboprog

+1

Außerdem mag ich die Tatsache, dass Sie etwas darauf hingewiesen haben, um es einfacher zu machen, anstatt einfach "du sollst" zu sagen (impliziert: selbst wenn es weh tut, etc) – Roboprog

+0

Named Bereiche sind besonders schön, weil Sie sie zusammenketten können. – cpm

8

Alles modellbezogene in das Modell einfügen. Zeitraum.

Verwandte Themen