[RUBY] Ajout de la création du type de référence des rails

introduction

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.

Qu'est-ce qu'une clé externe?

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.

supposition

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

Créer une colonne de type de référence

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

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

Ajouter une colonne de type de référence


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

Ajout de la création du type de référence des rails
Type de données de base et type de référence
Tableau de référence rapide des types de colonnes
Utilisation du type booléen Rails
Ajouter et enregistrer à partir de la création d'une base de données de rails
[Rails] Création initiale des données avec seed
[Ruby on Rails] Création de la page de confirmation
Qu'est-ce qu'une variable de type référence?
Différence entre le type primitif et le type de référence
Ajout de la première fonction de pagination dans les rails
[Rails] Tableau de référence rapide du code haml