rails generate migration AddRetweetsCountToTweet retweets_count:integer
Ok, ich verwende die obige Zeile, um eine Migrationsdatei zu erstellen, die automatisch Code in der generierten Datei generiert, um einem Modell-Tweet eine Spalte mit einer Datentyp-Ganzzahl hinzuzufügen. Jetzt möchte ich der hinzugefügten Spalte beim Generieren der Migrationsdatei einen Standardwert hinzufügen. Ist das möglich? Ich habe es gegoogelt, konnte es aber nicht finden. Jungs brauchen Hilfe.
ruby-on-rails
migration
kxhitiz
quelle
quelle
Antworten:
Der Standardmigrationsgenerator verarbeitet keine Standardwerte ( Spaltenmodifikatoren werden unterstützt, enthalten jedoch kein
default
odernull
), Sie können jedoch einen eigenen Generator erstellen.Sie können die Migrationsdatei auch vor dem Ausführen manuell aktualisieren,
rake db:migrate
indem Sie die folgenden Optionen hinzufügenadd_column
:add_column :tweet, :retweets_count, :integer, :null => false, :default => 0
... und lesen Sie die Rails API
quelle
... sollte arbeiten.
Weitere Informationen finden Sie im Rails-Handbuch zu Migrationen
quelle
Ja, ich konnte auch nicht sehen, wie 'default' im Migrationsgeneratorbefehl verwendet wird, konnte jedoch einen Standardwert für eine neue Zeichenfolgenspalte wie folgt angeben, indem ich die generierte Migrationsdatei vor dem Anwenden von "rake db: migrate" änderte:
Dadurch wird meinem "Widget" -Modell eine neue Spalte mit dem Namen "Farbe" hinzugefügt und die Standardfarbe für neue Widgets auf "Rot" gesetzt.
quelle
Ich habe versucht, t.boolean: active ,: default => 1 in der Migrationsdatei zum Erstellen der gesamten Tabelle. Nachdem diese Migration ausgeführt wurde, als ich db eincheckte, wurde sie als null festgelegt. Obwohl ich Standard als "1" sagte. Danach habe ich die Migrationsdatei leicht geändert, dann hat es für mich funktioniert, den Standardwert für die Erstellung einer Tabellenmigrationsdatei festzulegen.
t.boolean: active ,: null => false ,: default => 1. Hat für mich gearbeitet.
Meine Rails-Framework-Version ist 4.0.0
quelle
:default => false
?Sie müssten zuerst Ihre Migration für die Modellgrundlagen erstellen und dann eine weitere Migration erstellen, um Ihre vorherige mithilfe der change_column zu ändern ...
quelle