受け入れられた答えは素晴らしいですが、私のような専門家ではない人のために、元のポスターの質問パート2をうまく処理できるような答えをここに追加したいと思います。
- その列のタイプを置き換えるマイグレーションを作成するにはどうすればよいですか
足場マイグレーションの生成
コンソールに入力することで、変更を保持するマイグレーションを生成できます(table
テーブル名とcolumn
列名のを置き換えるだけです)。
rails generate migration change_table_column
これにより、Railsアプリケーションの/ db / migrate /フォルダー内にスケルトン移行が生成されます。この移行は、移行コードのプレースホルダーです。
たとえば、私はから列の種類を変更するには、移行を作成したいstring
とtext
テーブルと呼ばTodoItemsで、:
class ChangeTodoItemsDescription < ActiveRecord::Migration
def change
# enter code here
change_column :todo_items, :description, :text
end
end
移行を実行する
列を変更するコードを入力したら、次を実行します。
rake db:migrate
移行を適用します。エラーが発生した場合は、いつでも変更を元に戻すことができます。
rake db:rollack
アップおよびダウンメソッド
新しいメソッドではなく、受け入れられた回答リファレンスUp
とDown
メソッドChange
。Rails 3.2 以降、古いスタイルの UpメソッドとDownメソッドには、新しいChangeメソッドに比べていくつかの利点があります。「上下」を避けActiveRecord::IrreversibleMigration exception
ます。Rails 4のリリース以降、reversible
このエラーを回避するために使用できます。
class ChangeProductsPrice < ActiveRecord::Migration
def change
reversible do |dir|
change_table :products do |t|
dir.up { t.change :price, :string }
dir.down { t.change :price, :integer }
end
end
end
end
Railsをお楽しみください:)