Ich möchte Inhalte schreiben, die auch Anfänger verstehen können.
Organisieren Sie das Hinzufügen externer Schlüssel zu Spalten für die Modellzuordnung bei der Migration mit Schienen.
Die Voraussetzung ist, dass Sie einen Benutzer mehreren Tweets dieses Benutzers zuordnen möchten.
◉ Fügen Sie der Tabelle einen externen Schlüssel hinzu
Fügen Sie dazu der neu erstellten Tweets-Tabelle eine Spalte mit dem Namen user_id hinzu, um die ID des Benutzers zu speichern, dem der Beitrag gehört.
Fügen Sie in solchen Fällen eine Spalte für den externen Schlüssel mit einem Datentyp namens Referenz hinzu.
Schreiben Sie die Migrationsdatei, die die Tweets-Tabelle erstellt, wie folgt.
class CreateTweets < ActiveRecord::Migration[5.2]
def change
create_table :tweets do |t|
t.string :text, null: false
t.references :user, foreign_key: true, null: false
t.timestamps
end
end
end
t.references: user, Foreign_key: true Genau hier.
t.referencees: user erstellt eine Spalte mit dem Namen user_id. Und der Index wird automatisch zugewiesen. Der Index erleichtert die Suche.
Es scheint jedoch einen Nachteil zu geben, dass die Schreibgeschwindigkeit auf Kosten des Vorteils, dass das Lesen und Erfassen von Daten schneller wird, langsamer wird.
Allein damit gibt es keine externe Schlüsselbeschränkung
Foreign_key: Füge true hinzu.
Wenn Sie einer vorhandenen Tabelle einen externen Schlüssel hinzufügen möchten:
class AddColumn < ActiveRecord::Migration[5.0]
def change
add_reference :tweets, :user, foreign_key: true
end
end
Apropos, ...
Sie können eine NOT NULL-Einschränkung hinzufügen, indem Sie null: false schreiben. Setzen Sie diese Einschränkung, wenn Sie NULL nicht im Wert einer Datenbankspalte speichern möchten, dh wenn Sie erwarten, dass der Wert eines Attributs eines Modells enthalten ist.
Recommended Posts