Dieses Mal habe ich mich bei der Migration mit Schienen manchmal mit dem Referenztyp befasst, daher werde ich ihn zusammenfassen.
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.
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
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
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