質問: rails 初心者です。 ### 前提・実現したいこと 既存のデータベースにカラムを追加したいです。(データベースにはデータも既に入っております。) ### 発生している問題・エラーメッセージ migrationファイルに追加したいカラム(:tag)を追記し、 ターミナル上で rake db:migrateしてもエラーも何も起こらないのはなぜでしょうか。 ### 20160212060445_create_topics.rb ``` class CreateTopics < ActiveRecord::Migration def change create_table :topics do |t| t.text :body t.string :tag t.timestamps end end end ``` Status Migration ID Migration Name ---------------------------------------- up 20160212060445 Create topics up 20160213100018 ********** NO FILE ********** up 20160217084309 ********** NO FILE ********** up 20160218092058 Create users マイグレートのステータスは上記のようです。 質問方法がよくわからず、申し訳ありませんが、必要な情報などございましたらお教えいただきたいです。 よろしくお願いいたします。
回答: 既存のテーブルにカラムを追加したいと思い、 モデル生成の際に作成されたマイグレーションファイルを編集したが、その内容が反映されない。 という状況であるとの理解を前提で回答します。 もし、外していたらすみません。 すでにマイグレーション済みのマイグレーションファイルを編集しても、その内容は反映されません。 rake db:migrateで反映されるのは、最後に適用したマイグレーションファイル以降のものだけです。 やるとすれば、編集したマイグレーションまでロールバックしてやり直すか、新たにカラムを追加するマイグレーションファイルを作成して適用するかです。 ロールバックするやり方だと、テーブルを削除して追加、となるので、既存のデータは全て削除されてしまいますから、新たにマイグレーションファイルを作成して適用する方法が良いでしょう。 rails g migration NewMigrationClassName 上記コマンドで、新たにマイグレーションファイルが生成される(上記の場合、YYYYmmddHHMMSS_new_migration_class_name.rb) そのファイルにカラム追加のマイグレーションを書いてあげればOKです。 ``` class NewMigrationClassName < ActiveRecord::Migration def up add_column :topics, :tag, :string end def down remove_column :topics, :tag end end ``` 上記方法で、カラム名の追加、削除、カラム名変更など行えます。 rails migrationで検索すれば、有用なトピックがたくさん見つかるでしょう。