&tag(マイグレーション); *目次 [#v5671532] #contents *関連ページ [#dd30858c] *参考情報 [#f8d1da54] *マイグレーションファイルの作成 [#t8235a17] **マイグレーションファイルを単体で生成する [#z9913a58] - rails generateで生成可能。create_booksはCreateBooksでも可。[[NAMAKESUGI |[Rails4] migrationコマンドまとめ:http://namakesugi.blog42.fc2.com/blog-entry-157.html]] bundle exec rails generate migration create_books - createから始めたらcreate table、addから始めたらカラムの追加、removeから始めたらカラムの削除用のテンプレートを自動で作ってくれる。 **例1: テーブル生成 [#t4d00d54] -booksテーブルを生成する場合。 bundle exec rails generate migration create_books -以下のようにファイルを書き換える。 #pre{{ class CreateHoges < ActiveRecord::Migration def change create_table :hoges do |t| t.string :name t.integer :age t.timestamps end end end }} **例2: テーブルにカラムを追加する [#ke1e3352] ***テーブルに文字列カラムを追加する [#ib05cf4e] -booksテーブルにimageカラム(文字列)を追加する bundle exec rails generate migration add_image_to_books -以下のようにファイルを書き換える。 #pre{{ class AddImageToBooks < ActiveRecord::Migration def change add_column :books, :image, :string end end }} ***テーブルにMySQLのLONGTEXTカラムを追加する [#d856bcf4] -":text"だけだとLONGTEXTにならない。, :limitが必要。[[コチョナナバ: railsでmysqlのlongtext型を使う:http://kingyo-bachi.blogspot.jp/2013/06/railsmysqllongtext.html]] #pre{{ class AddDescriptionToBooks < ActiveRecord::Migration def change add_column :books :description, :text, :limit => 4294967295 end end }} *実行 [#be4a52be] -マイグレーション実行。何も指定しないとdevelopment環境が更新される。 bundle exec rake db:migrate -production環境を更新したい場合 bundle exec rake db:migrate RAILS_ENV=production -マイグレーション再実行 bundle exec rake db:migrate:recet *状態確認 [#scebff42] -db:migrate:statusで現在の状態を確認できる。Statusがupのところが実行済みのもの。 #pre{{ $ bundle exec rake db:migrate:status Status Migration ID Migration Name -------------------------------------------------- up 20140927082920 Create books up 20140927084708 Create hoges up 20141121060148 Create software infos down 20150409052819 Create settings }} -db:versionで現在どこまで進んでいるかを確認できる。 #pre{{ $ bundle exec rake db:version Current version: 20141121060148 }}