0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】既存のテーブルにカラムを追加し、外部キーとして設定する

Last updated at Posted at 2022-06-05

テーブルと一緒にreference型のカラムを作成する時

せっかくなのでこちらも書いておきます。

Rails 6.0.4

・前提条件
Genreテーブルがある。

・やりたいこと
Genreテーブルを紐づけた新しいテーブル(Movie)を用意したい

①credit_cardモデルを作成

$ rails g model Movie

②作られたmigrationファイルを開き、以下のように編集する。

db/migrate/20220404054303_create_movies.rb

class CreateMovies < ActiveRecord::Migration[5.2]
  def change
    create_table :movies do |t|
      t.string :title, null: false
      t.string :image, null: false
      t.integer :released_year, null: false
      t.references :genre, null: false, foreign_key: true
      t.timestamps
    end
  end
end

t.references :genre, null: false, foreign_key: trueforeign_key: true が外部キーです。

マイグレーションの実行

$ rails db:migrate

すでに作られているテーブルにreference型のカラムを追加するとき

・前提条件
movieテーブルとgenreテーブルがある

・やりたいこと
Movieテーブルに genre_idを外部キーとして追加したい

マイグレーションファイルの生成

$ rails g migration AddReferencesToMovies

作られたmigrationファイルを開き、編集する。

db/migrate/20220605035059_add_references_to_movies.rb

class AddReferencesToMovies < ActiveRecord::Migration[5.2]
  def change
    add_reference :movies, :genre, null: false, foreign_key: true
  end
end

ターミナル

$ rails db:migrate

(注意点)
テーブルと一緒にreference型のカラムを作成する時は、references

後からreference型のカラムを追加する時は、reference

で記述する。

参考:https://qiita.com/krile136/items/0e824a6fb1d657bd3f97
https://k-koh.hatenablog.com/entry/2020/03/13/100517

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?