ど忘れするので自分用メモ
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 #自分で記述
add_reference :products, :user #外部キー(user_id)を追加
end
end
上記例だとstring型のnameカラムが作成され、integer型のcountカラムが削除される。
$ bundle exec rake db:migrate