0
Help us understand the problem. What are the problem?

posted at

外部キー制約のついたカラムを削除する方法

ここではgenreテーブルからmovie_idカラムを削除します。

まず $ rails generate migration remove_カラム名_from_テーブル名 を実行して、外部キー制約のかかったカラムを削除するためのマイグレーションファイルを作成します。

# rails g migration remove_movie_from_genre movie:references
Running via Spring preloader in process 414
      invoke  active_record
      create    db/migrate/20220406054902_remove_movie_from_genre.rb

削除用のマイグレーションファイルを確認します。

20220406054902_remove_movie_from_genre.rb
class RemoveMovieFromGenre < ActiveRecord::Migration[6.0]
  def change
    remove_reference :genres, :movie, null: false, foreign_key: true
  end
end

特に問題ないので、手を加えることなくrails db:migrateを実行します。

# rails db:migrate
== 20220406054902 RemoveMovieFromGenre: migrating =============================
-- remove_reference(:genres, :movie, {:null=>false, :foreign_key=>true})
   -> 0.1231s
== 20220406054902 RemoveMovieFromGenre: migrated (0.1268s) ====================

以上でカラムの削除ができました。

何か間違いや不足などあればご指摘いただけると幸いです。

開発環境
mac OS バージョン11.6
エディタ
VScode

参考:https://qiita.com/himatani/items/38445aafa1312390d418

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?