Ich versuche, eine Spalte in meiner Rails-App zu konvertieren, für Argumente willen tun wir so tun, dass ich versuche, die age
Spalte in meiner users
Tabelle in eine Zeichenfolgendarstellung statt ein int zu ändern.Can Rails Migrationen werden zum Konvertieren von Daten verwendet?
In meiner Migration Ich habe dies;
def.self up
add_column :users, :age_text, :string
users = User.find(:all)
users.each do |u|
u.age_text = convert_to_text(u.age)
u.save
end
end
def self.convert_to_text(number)
#code here to convert 1 to 'one' etc
end
Aber es scheint nicht zu funktionieren, ist das, was ich hier versuche, sogar mit Migrationen möglich?
Was wäre ein besserer Weg? – Kirschstein
Hängt davon ab, was Sie tun möchten. Wenn es ein einfaches Update ist, können Sie einfach einen SQL-Befehl mit der execute-Methode ausführen (führen Sie 'update user set colA = 1' aus). Sei wieder vorsichtig. Wenn Sie 10k Benutzer in der Benutzertabelle haben, wird das Durchlaufen jedes einzelnen mit der obigen Migration sehr lange dauern. –
Manchmal müssen Sie auch dazu User.connection.schema_cache.clear! – hrdwdmrbl