3 Stimmen

Ändern Sie den Spaltennamen und legen Sie einen Standardwert fest

Ich führe aus:

rails generate migration AddShowmsgColumnToPublishers show_msg:boolean
rake db:migrate

aber jetzt möchte ich den Namen der Spalte in "hide_msg" ändern und einen Standardwert auf false setzen.

Wie kann ich das bitte machen?

Ich habe gelesen, dass ich etwas Ähnliches tun muss:

erster Schritt:

rails generate migration FixColumnName

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

zweiter Schritt:

rails generate migration add_default_value_to_hide_msg

dritter Schritt: Datei bearbeiten in:

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

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

und schließlich:

rake db:migrate

aber gibt es keinen anderen Weg mit einem Befehl?

8voto

Manoj Monga Punkte 3033

Sie können auch beides in einer einzelnen Migration spezifizieren, z.B.

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

Und dann führen Sie rake db:migrate aus. Funktioniert gut für mich :)

2voto

My God Punkte 22646

Sie können rake db:rollback STEP=2 machen.

Sie können die 2 durch so viele Migrationen ersetzen, wie Sie zurückgehen möchten.

Und dann einfach:

rails generate migration AddHidemsgColumnToPublishers hide_msg:boolean

rake db:migrate

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X