Je voudrais écrire du contenu que même les débutants peuvent comprendre.
Organisez comment ajouter des clés externes aux colonnes pour l'association de modèles lors de la migration avec des rails.
Le principe est que vous souhaitez associer un utilisateur à plusieurs tweets de cet utilisateur.
◉ Ajouter une clé externe à la table
Pour ce faire, ajoutez une colonne appelée user_id à la table des tweets nouvellement créée pour stocker l'id de l'utilisateur propriétaire de la publication.
Dans ce cas, ajoutez une colonne pour la clé externe à l'aide d'un type de données appelé référence.
Écrivez le fichier de migration qui crée la table des tweets comme ceci.
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: utilisateur, clé étrangère: true Ici même.
t.referencees: l'utilisateur créera une colonne appelée user_id. Et l'index est automatiquement attribué. L'index facilite la recherche.
Cependant, il semble qu'il y ait un inconvénient à ce que la vitesse d'écriture devienne plus lente au prix de l'avantage que la lecture et l'acquisition des données deviennent plus rapides.
Avec cela seul, il n'y a pas de contrainte de clé externe, donc
Foreign_key: ajoutez true.
De plus, si vous souhaitez ajouter une clé externe à une table existante:
class AddColumn < ActiveRecord::Migration[5.0]
def change
add_reference :tweets, :user, foreign_key: true
end
end
Au fait, ...
Vous pouvez ajouter une contrainte NOT NULL en écrivant null: false. Mettez cette contrainte lorsque vous ne souhaitez pas stocker NULL dans la valeur d'une colonne de base de données, c'est-à-dire lorsque vous vous attendez à ce que la valeur d'un attribut d'un modèle soit incluse.
Recommended Posts