LoginSignup
70
74

More than 3 years have passed since last update.

カラムの修正、追加、削除、変更、データ型の変更

Last updated at Posted at 2020-02-27

カラムの修正方法

マイグレーションファイルのカラムをスペルミスしたときにrails db:rollbackするとマイグレーションファイルを差し戻せる
ロールバック=>修正=>マイグレートで修復できます。

$ rails db:rollback

データベースに反映済みのマイグレーションファイルは修正してはダメ

マイグレーションファイルが既にマイグレーション済みなのかどうかは、rails db:migrate:statusで確認できます。

$ rails db:migrate:status

適用されているときはupと表示され、修正するためにはロールバックする。適用されていないときは、downと表示され、そのまま修正や削除が可能です。
最後に

$ rails db:migrate

カラムの追加方法

$ rails g migration Addカラム名To追加先テーブル名 追加するカラム名:データ型

【例】カラム名はtitle、テーブル名はposts、データ型はstringの場合

$ rails g migration AddTitleToPosts title:string

カラム名、削除元テーブル名は頭文字は大文字で、削除するカラム名、データ型は小文字です。
最後に

$ rails db:migrate

カラムの削除方法

rails g migration Removeカラム名From削除元テーブル名 削除するカラム名:データ型

【例】カラム名はtitle、テーブル名はposts、データ型はstringの場合

$ rails g migration RemoveTitleFromPosts title:string

最後に

$ rails db:migrate

カラム名、削除元テーブル名は頭文字は大文字で、削除するカラム名、データ型は小文字です。

カラムの変更

カラム名を変更するためのmigrationファイルを作成します。
【例】変更したいカラム名はtitle、変更後のカラム名はcomment、テーブル名はpostsとします。

rails g migration rename_変更したいカラム名_column_to_テーブル名
$ rails g migration rename_title_column_to_posts

生成されたファイルを編集します。

ename_column テーブル名, 変更前のカラム名, 変更後のカラム名
db/migrate/20XXXXXXXXXXX_rename_title_column_to_posts.rb
class RenameRequestColumnToJobAdministrations < ActiveRecord::Migration[5.0]
  def change
    rename_column :posts, :title, :comment
  end
end

最後に

$ rails db:migrate

データ型の変更

$ rails g migration ChangeDatatypeカラム名Ofテーブル名

【例】データ型をstringからtextに変える場合

$ rails g migration ChangeDatatypeCommentOfPosts

カラム名、テーブル名の頭文字は大文字です。

生成されたファイルを編集します。

change_column :テーブル名, :カラム名, :データ型
db/migrate/20XXXXXXXXXXX_rename_comment_column_to_posts.rb
class ChangeDatatypeUseIdOfBlogs < ActiveRecord::Migration[5.0]
  def change
    change_column :posts, :comment, :text
  end
end

最後に

$ rails db:migrate
70
74
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
70
74