Cette fois, j'ai parfois manipulé le type de référence lors de la migration avec des rails, je vais donc le résumer.
Vous devez connaître les clés externes lorsque vous travaillez avec des types de référence.
Une clé externe est une base de données relationnelle (RDB) qui vous permet de saisir uniquement des éléments contenus dans une colonne spécifique d'une autre table dans une colonne de la table. En outre, la colonne spécifiée à ce moment http://e-words.jp/w/%E5%A4%96%E9%83%A8%E3%82%AD%E3%83%BC.html#:~:text=%E5%A4%96%E9%83%A8%E3%82%AD%E3%83%BC%E3%81%A8%E3%81%AF%E3%80%81%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB,%E3%82%92%E7%94%A8%E3%81%84%E3%81%A6%E8%A8%AD%E5%AE%9A%E3%81%A7%E3%81%8D%E3%82%8B%E3%80%82
Cette fois, définissez une clé externe appelée user_id de type référence dans la table articles.
Préparez une table utilisateur et une table ariticle comme échantillons.
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name
t.string :email
end
end
end
class CreateArticles < ActiveRecord::Migration[6.0]
def change
create_table :articles do |t|
t.string :title
t.string :content
end
end
end
$ rake db:migrate
Si vous le créez avec le type de référence, il ne sera pas ajouté tel quel, mais sera ajouté avec le nom de colonne ʻuser_id. Il a également l'avantage d'indexer automatiquement sans ajouter ʻindex: true
.
class CreateArticles < ActiveRecord::Migration[6.0]
def change
create_table :articles do |t|
t.string :title
t.string :content
t.references :user, foreign_key: true
end
end
end
Foreign_key: true
.
Il y avait quelque chose qui n'a pas pu être défini car j'ai oublié d'écrire Foreign_key: true
.Il peut également être ajouté en utilisant ʻadd_foreign_key`.
class CreateArticles < ActiveRecord::Migration[6.0]
def change
create_table :articles do |t|
t.string :title
t.string :content
end
add_foreign_key :articles, :users
end
end
class AddReferenceColumn < ActiveRecord::Migration[6.0]
def change
add_reference :articles, :user, foreign_key: true
end
end
N'oubliez pas Foreign_key: true
.
Recommended Posts