1) Meinen Sie, wenn ein Generator? Im Allgemeinen sollten Sie Migrationen generieren, anstatt einen Generator für das gesamte Modell/Gerüst zu verwenden. Und dann, nein, ein Fremdschlüssel wird nicht automatisch erstellt, nur wenn Sie ihn angeben.
2) add_index wird nützlich sein für Spalten auf großen Tabellen, die schnell von Ihrer Datenbank zugegriffen werden müssen. Nehmen wir an, Sie haben eine users
Tabelle mit einer email
Spalte, die eindeutig sein muss, aber nicht indiziert ist. Und Ihr Service wächst, jetzt haben Sie Millionen von Nutzern und Sie müssen User.find_by_email "[email protected]"
gehen. Ohne Index braucht es eine Weile. Mit einem Index wird es schnell gehen. Das ist, wenn ein Index nützlich ist.
3) Wirklich hängt von Ihrem Datenbankmodul afaik ab. Nicht etwas, das Ihren täglichen Imho beeinflussen wird (obwohl wenn Sie eine bestimmte Datenbank-Engine im Hinterkopf haben, können Sie sicherlich herausfinden). Hier ist die Info über MySQL, direkt aus der Quelle: https://dev.mysql.com/doc/refman/5.5/en/column-indexes.html
So Schienen Modell generieren, schreiben Sie dann die Migration, ist eine bessere Praxis? Ich denke auch, dass ich es herausgefunden habe. Wenn ich also die Methode t.references verwende, erstelle ich den Fremdschlüssel? – PudparK
nein - Sie müssen das Modell nicht generieren. Erstellen Sie die Migration, schreiben Sie das Modell. Und 'index: true' innerhalb der Migration markiert einen col als Index, obwohl Sie auch Möglichkeiten haben, den Index nachträglich hinzuzufügen. – ezuk
Das macht alles klar. Danke vielmals! – PudparK