3

走る:

rails generate migration AddShowmsgColumnToPublishers show_msg:boolean
rake db:migrate

しかし今、列の名前を「hide_msg」に変更し、デフォルト値を false に設定したいと考えています。

どうすればそれができますか?

私は次のようなことをしなければならないことを読みました:

最初の一歩:

rails generate migration FixColumnName

class FixColumnName < ActiveRecord::Migration
  def change
    rename_column :publishers, :show_msg, :hide_msg
  end
end

第二段階:

rails generate migration add_default_value_to_hide_msg

3 番目のステップ:ファイルを次のように編集します。

def up
    change_column :profiles, :show_attribute, :boolean, :default => false
end

def down
    change_column :profiles, :show_attribute, :boolean, :default => nil
end

そして最後に:

rake db:migrate

しかし、1つのコマンドで他に方法はありませんか?

4

2 に答える 2

8

1 回の移行で両方を指定することもできます。例えば

class FixColumn < ActiveRecord::Migration
  def up
    rename_column :publishers, :show_msg, :hide_msg
    change_column :publishers, :hide_msg, :boolean, :default => false
  end

  def down
    rename_column :publishers, :hide_msg, :show_msg
    change_column :publishers, :show_msg, :boolean, :default => nil
  end
end

そして実行しrake db:migrateます。私にとってはうまくいきます:)

于 2013-02-06T09:16:19.170 に答える
2

レーキができますdb:rollback STEP=2

戻したい移行の数を 2 に置き換えることができます。

そして、単純に次のようにします。

rails generate migration AddHidemsgColumnToPublishers hide_msg:boolean

rake db:migrate
于 2013-02-06T09:02:34.953 に答える