RailsでのDBとテーブル作成とカラムのオプションについて

ど忘れするので自分用メモ

DB作成

ターミナル
$ rails g db:create

DB削除

ターミナル
$ rails d db:create

モデル作成

基本的にテーブル作成する際はモデルも作成する。

ターミナル
$ rails g model product

モデル削除

ターミナル
$ rails d model product

マイグレーションファイル

モデルを作成したらマイグレーションファイルも作成される。
マイグレーションファイルを編集することで、テーブルのカラムを作成できる。

マイグレーションファイル
class CreateProducts < ActiveRecord::Migration[5.0]
  def change
    create_table :products do |t|
      t.string      :name, null: false, index: true, unique: true,
      t.integer     :price, default: 100, null: false
      t.text        :info
      t.references  :user
    end
  end
end

説明
t.string→カラムの型を文字列型に指定
name→カラム名を「name」
null: false →「not null制約(nullはNG)」をつける
index: true →インデックスをつける
unique: true →一意制約をつける。
t.integer→カラムの型を数値型に指定
default: 100→初期値(100)を設定
t.text→カラムの型をテキスト型に指定
t.references→自動でuserテーブルの外部キーを作ってくれる。
※随時、出くわすたびに追加予定

マイグレート

マイグレートすることで、マイグレーションファイルを元にテーブルが作成される。

ターミナル
$ bundle exec rake db:migrate

マイグレート取り消し

一つ前のマイグレートした情報がロールバックされる。

ターミナル
$ bundle exec rake db:rollback

カラムの追加

すでに作成(マイグレート)済みのテーブルに対してカラムを追加する。

ターミナル
$ rails g migration AddColumnToProducts count:integer

上記コマンドを実行すると自動でカラム追加のマイグレーションファイルが作成される。

マイグレーションファイル
class AddColumnProducts < ActiveRecord::Migration[5.0]
  def change
    add_column :products, :count, :integer
  end
end
ターミナル
$ bundle exec rake db:migrate

カラムの削除

すでに作成(マイグレート)済みのテーブルに対してカラムを削除する。

ターミナル
$ rails g migration RemoveCountFromProducts count:integer

上記コマンドを実行すると自動でカラム削除のマイグレーションファイルが作成される。

マイグレーションファイル
class RemoveNameFromTweets < ActiveRecord::Migration[5.0]
  def change
    remove_column :products, :name, :string
  end
end
ターミナル
$ bundle exec rake db:migrate

マイグレーションファイル直接修正

マイグレーションファイルを作成し、直接編集する場合

ターミナル
$ rails g migration change
マイグレーションファイル
class Change < ActiveRecord::Migration[5.0]
  def change
    add_column    :products, :name, string   #自分で記述
    remove_column :products, :count, integer #自分で記述
  end
end

上記例だとstring型のnameカラムが作成され、integer型のcountカラムが削除される。

ターミナル
$ bundle exec rake db:migrate
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.