[RUBY] Erstellung des Schienenreferenztyps hinzugefügt

Einführung

Dieses Mal habe ich mich bei der Migration mit Schienen manchmal mit dem Referenztyp befasst, daher werde ich ihn zusammenfassen.

Was ist ein externer Schlüssel?

Sie müssen über externe Schlüssel Bescheid wissen, wenn Sie mit Referenztypen arbeiten.

Ein externer Schlüssel ist eine relationale Datenbank (RDB), mit der Sie nur Elemente, die in einer bestimmten Spalte einer anderen Tabelle enthalten sind, in eine Spalte der Tabelle eingeben können. Auch die zu diesem Zeitpunkt angegebene Spalte 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

Legen Sie diesmal einen externen Schlüssel mit dem Namen user_id vom Referenztyp in der Artikeltabelle fest.

Annahme

Bereiten Sie eine Benutzertabelle und eine Artikeltabelle als Beispiele vor.


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

Erstellen einer Referenztypspalte

Wenn Sie es mit dem Referenztyp erstellen, wird es nicht so hinzugefügt, wie es ist, sondern mit dem Spaltennamen "user_id". Es hat auch den Vorteil, dass es automatisch indiziert, ohne "index: true" hinzuzufügen.


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

Es kann auch mit add_foreign_key hinzugefügt werden.


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

Referenztypspalte hinzufügen


class AddReferenceColumn < ActiveRecord::Migration[6.0]
  def change
    add_reference :articles, :user, foreign_key: true
  end
end

Vergessen Sie nicht Foreign_key: true.

Recommended Posts

Erstellung des Schienenreferenztyps hinzugefügt
Basisdatentyp und Referenztyp
Kurzreferenztabelle für Spaltentypen
Verwendung des booleschen Rails-Typs
Hinzufügen und Speichern von Rails-Datenbankerstellung
[Rails] Erste Datenerstellung mit Seed
[Ruby on Rails] Erstellung der Bestätigungsseite
Was ist eine Referenztypvariable?
Unterschied zwischen primitivem Typ und Referenztyp
Hinzufügen der ersten Paginierungsfunktion in Schienen
[Rails] Haml-Code-Kurzreferenztabelle