概要
Migrationでテーブルにカラムを追加、削除する
内容
Migrationでテーブルにカラムを追加、削除するするには以下を利用します。
rails g migration add_column_name_to_table_name column_name:data_type rails g migration remove_column_name_from_tableName columnName:dataType
サンプル
BookReview(書評)モデルを作成
rails g model book_review rank:integer invoke active_record create db/migrate/20130711155242_create_book_reviews.rb create app/models/book_review.rb invoke rspec create spec/models/book_review_spec.rb
マイグレーションの実行
rake db:migrate == CreateBookReviews: migrating ============================================== -- create_table(:book_reviews) -> 0.0669s == CreateBookReviews: migrated (0.0670s) =====================================
生成されたテーブルの確認
mysql> desc book_reviews; +------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | rank | int(11) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | +------------+----------+------+-----+---------+----------------+
書評モデルのコメント(comment)カラム、備考(notes)カラムを追加する
rails g migration add_comment_to_book_review comment:string rails g migration add_notes_to_book_review notes:string
マイグレーションの実行
besrk db:migrate == AddCommentToBookReview: migrating ========================================= -- add_column(:book_reviews, :comment, :string) -> 0.0600s == AddCommentToBookReview: migrated (0.0601s) ================================ == AddNotesToBookReview: migrating =========================================== -- add_column(:book_reviews, :notes, :string) -> 0.0070s == AddNotesToBookReview: migrated (0.0070s) ==================================
変更されたテーブルの確認
mysql> desc book_reviews; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | rank | int(11) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | comment | varchar(255) | YES | | NULL | | | notes | varchar(255) | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+
書評モデルの備考(notes)カラムを削除する
rails g migration remove_notes_to_book_review notes:string
マイグレーションの実行
besrk db:migrate == RemoveNotesToBookReview: migrating ======================================== -- remove_column(:book_reviews, :notes, :string) -> 0.0064s == RemoveNotesToBookReview: migrated (0.0066s) ===============================
変更されたテーブルの確認
mysql> desc book_reviews; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | rank | int(11) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | comment | varchar(255) | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+