74
78

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 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
74
78
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
74
78

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?