#この記事で扱うこと
- NOT NULL制約の付いたカラムに制約を追加/削除する方法
- 複数カラムを紐付けたカラムからindexを削除する方法
- reference型で作成した外部キーをつけたカラムを削除する方法
#NOT NULL制約を追加/削除する
##NOT NULL制約を追加したいとき
def up
change_column_null :posts, :content, false
end
def down
change_column_null :posts, :content, true
end
ポイントはchangeメソッドを使用せず、up/downメソッドを使用すること
##NOT NULL制約を削除したいとき
def up
change_column_null :posts, :content, true
end
def down
change_column_null :posts, :content, false
end
#複合キーindexを付けたカラムからindexを削除する
def change
remove_index :likes, column: [:user_id, :post_id], unique: true
end
単一カラムからindexを削除する時は以下のように
def change
remove_index :likes, column: :micropost_id, unique: true
end
#reference型で作成した外部キーをつけたカラムを削除する方法
def change
remove_reference :posts, :user, null: false, foreign_key: true
end
foreign_key: trueで外部キーを設定していたらそれもつけてあげると良いです
#おまけ
あるカラムにindexが付いているか確認する(MySQLにて)
mysql > SHOW CREATE TABLE tbl_name
#参考
https://dev.mysql.com/doc/refman/5.6/ja/show-create-table.html