2010-11-13 14 views
5

Welches ORM wird am besten mit einer neuen Rails 3-App für eine ältere MySQL 5.1-Datenbank verwendet? Ich erwarte nicht, jemals eine Migration gegen diese Datenbank durchzuführen (obwohl sich das Schema von Zeit zu Zeit ändern kann), aber ich werde sicherlich daran schreiben.Rails 3: ActiveRecord vs. DataMapper (vs. ???) für ältere MySQL-Datenbanken

+0

Können Sie ein wenig vom Schema teilen? – rwilliams

+0

Entschuldigung, es ist das geistige Eigentum eines Kunden, also kann ich es nicht teilen. –

Antwort

12

Ich bin vielleicht voreingenommen gegenüber DataMapper, aber ich denke, DM ist im Allgemeinen eine gute Option für die Integration in ältere Datenbanken.

  • DM ermöglicht es Ihnen sinnvolle Modell und Eigenschaftsnamen zu kryptischen Vermächtnis Tabellen- und Spaltennamenskonventionen abzubilden. Sie können dies entweder auf einem pro Modell/Eigentum oder einer App breiten Basis tun.

  • DM unterstützt faule Eigenschaften, die nur beim tatsächlichen Zugriff abgerufen werden.

  • DM unterstützt nahtlos zusammengesetzte Primärschlüssel.

  • DM kümmert sich nur um die Eigenschaften (Spalten), die Sie explizit in Ihren Modellen deklarieren. Andere Spalten werden niemals berührt oder gelesen.

  • DM funktioniert gut mit Fremdschlüssel Einschränkungen in Ihrer Datenbank und mit Hilfe von dm-constraints unterstützt es auch die Erstellung von ihnen.

Es gibt einige Dokumentation auf http://datamapper.org/docs/legacy auch.

5

Es gibt auch die dm-types-legacy-Bibliothek (https://github.com/postmodern/dm-types-legacy), die gängige DM-Typen für die Zuordnung in seltsam formatierten Daten (Numerische IP-Adressen, HTML/URI) bietet kodierter Text, Datums-/Uhrzeitzeichenfolgen).

+1

Funktioniert das mit datetime_select? Ich versuche beispielsweise, ein Datetime-Feld zu aktualisieren, und es schlägt daher fehl: "published_at (1i)" => "2010", "published_at (2i)" => "11", "published_at (3i)" => "14", "published_at (4i)" => "07", "published_at (5i)" => "59" –