0
1

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.

Rails  テーブル作成、カラムの追加や削除

Posted at

はじめに

よく忘れるので、メモ

モデル作成 テーブル作成

railsでモデルを作成する際に、テーブルを作成するためのマイグレーションファイルが同時に作られます。
↓モデル作成コマンド

$ rails generate model [モデル名] [属性名:データ型 属性名:データ型・・・] [オプション]

省略版
$ rails g model [モデル名] [属性名:データ型 属性名:データ型・・・] [オプション]

-コマンドを実行すると、自動で作られるファイル

 ①モデルのクラスファイル
 ②マイグレーションファイル
 ③モデルの自動テスト
 ④モデルの自動テストで使うfictureファイル

例 $ rails g model User name:string email:string
上のコマンドで作ると下のマイグレーションができる。

class CreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

そしたら、マイグレーションをする。

$ rails db:migrate

終わり

テーブル削除 カラム追加・削除

※クラス名はAddXXXToYYY、またはRemoveXXXFromYYYとします。
「XXX」にはテーブル名、YYYにはカラム名(複数のカラムを変更したい場合などがあるのでカラム名ではなくても大丈夫)

カラム追加のマイグレーション作成

※memo(text型)のカラムを追加する場合

例 $ rails g migration AddMemoToUsers memo:text

作成されたら**$ rails db:migrate**を実行し反映させます。

カラム削除のマイグレーション作成

※name(string型)のカラムを削除したい場合

例 $ rails g migration RemoveNameFromUsers name:string

作成されたら**$ rails db:migrate**を実行し反映させます。

テーブルの削除

マイグレーションファイルの作成
本当はusersとしたかったところをuserssとしてしまい。テーブルを削除することに。なので、マイグレーションファイルを作成する。

例 $ rails g migration userss

マイグレーションファイル編集
消したいテーブルを指定して、drop_table :userssと記述する。

例 class DeleteUserss < ActiveRecord::Migration[6.0]
  def change
    drop_table :userss
  end
end

下記のコマンドを叩くと、データベースから削除される。

$ rails db:migrate

ファイルの削除

ファイルツリーから直接消さずに、コマンドを実行してファイルを削除しましょう。

$ rails destroy migration クラス名

省略
$ rails d migration クラス名

例 $rails d migration AddMemoToUsers
0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?