2011-01-04 3 views
24

Ich habe eine Anwendung geschrieben in PHP/MySQL (symfony, um genau zu sein), die ich (möglicherweise) gerne in Rails neu schreiben würde. Ich weiß, wie man ein Gerüst für Tabellen erstellt, die noch nicht existieren, aber wie bekomme ich Rails dazu, meine existierende Tabellenstruktur zu lesen und auf dieser Grundlage ein Gerüst zu erstellen?Putting Rails über eine bestehende Datenbank

Update: es stellt sich heraus, dass ich den folgenden Befehl ausführen kann Rails bekommen für mich zu generieren Modelle:

rails generate scaffold Bank --no-migration 

Aber es gibt mir nicht bildet. Ich würde etwas bevorzugen, das mir Formulare gibt.

Antwort

28

Die Antwort ist db:schema:dump.

http://guides.rubyonrails.org/migrations.html

+0

Und dann Modelle für die von ihnen richtige schaffen, wo Sie wollen „Formulare“ verwenden. – Krule

+0

Oh ja, habe die Formulare vergessen. Muss ich diese Modelle manuell erstellen? –

+0

Sie sollten Modelle erstellen und Beziehungen in ihnen definieren und dann Formulare erstellen, wo Sie sie benötigen. – Krule

11

Der einfachste Weg besteht darin, so zu tun, als würden Sie eine neue App mit einem ähnlichen Datenbankschema schreiben. Sie können dann Ihre Modelle und Migrationen nach dem alten Schema erstellen, ohne jedoch darauf beschränkt zu sein. Zu einem späteren Zeitpunkt können Sie ein Datenbankmigrationsskript erstellen, um alle alten Daten in das neue Schema zu kopieren.

Ich mache das gerade jetzt. Der Vorteil dieses Ansatzes besteht darin, dass Sie alle schnellen Entwicklungstools und -techniken von Rails (einschließlich Scaffolds) nutzen können, ohne durch das Nachrüsten auf genau dasselbe Schema gebremst zu werden.

Wenn Sie jedoch entscheiden, dass Ihnen diese Vorgehensweise nicht gefällt und Sie Ihre neuen Modelle vorhandenen Tabellen zuordnen müssen, gibt es eine Reihe von Konfigurationsoptionen, die von active record zur Verfügung gestellt werden Konfigurationsmuster und Kartenmodellnamen auf Tabellen Namen zu nennen, setzen seltsam benannten ID-Felder usw. zum Beispiel:

class Mammals < ActiveRecord::Base 
    set_table_name "tbl_Squirrels" 
    set_primary_key :squirrel_id 
end 

die oben helfen Rails Versuch, Ihre vorhandene Tabelle zu lesen, aber der Erfolg wird davon abhängen, wie gut die vorhandenen Tabelle Strukturen entsprechen Rails-Konventionen. Möglicherweise müssen Sie weitere Konfigurationsinformationen angeben, um es zum Laufen zu bringen, und selbst dann funktioniert es möglicherweise nicht.

Schließlich kann es sich lohnen, die Verwendung von DataMapper bedenkt, die ich glaube an bestehende Brach Datenbanken als Active besser geeignet ist, weil es Ihnen zu Karte alles erlaubt, aber natürlich müssen Sie diese API lernen, wenn Sie weiß es nicht schon.

Verwandte Themen