Rails: Impossible d'ajouter :la précision ou l' :options d'échelle avec change_column dans une migration?
Cela semble avoir été demandé avant: rails de précision et l'échelle décimales
Mais lors de l'exécution d'un change_column
migration pour :precision
ou :scale
ils n'affectera pas le schéma ou de la base de données, mais db:migrate
s'exécute sans erreur.
Ma migration fichier ressemble à ceci:
class ChangePrecisionAndScaleOfPaybackPeriodInTags < ActiveRecord::Migration
def self.up
change_column :tags, :payback_period, :decimal, { :scale => 3, :precision => 10 }
end
def self.down
change_column :tags, :payback_period, :decimal
end
end
Mais mon schéma (et les données) reste:
t.decimal "payback_period"
Quelqu'un d'autre a ce problème?
Merci,
Josh
Vous devez vous connecter pour publier un commentaire.
Avait un lien (mais pas le même problème. Je viens de changer d'échelle, de sorte que lors de la modification de l' :l'échelle, vous avez besoin de la totalité de la gamme:
omettant :décimal (qui c'était déjà le cas) et :la précision (qui l'était déjà 10) sera la cause de l'échec de la migration.
Ne fonctionne Pas pour SQLite3
Pour cette simple application de test que je l'exécute j'ai SQLite3 le programme d'installation. Apparemment, SQLite3 ne pas compter sur le type de colonne déclarations et est plus dynamique, en regardant la colonne de contenu, au lieu - comme c'était tombé sur ici:
Modifier le Type de la Colonne dans sqlite3
Je ne l'ai pas testé mais je suis sûr que c'est pourquoi le schéma n'a pas été changé, parce que
change_column
ne se traduit pas pour rien dans SQLite3.Merci pour les réponses les gars.
Supprimer et de régénérer
db\schema.rb
fichier.schema.rb
fichier modifié en conséquence.Un hack, mais il devrait vous obtenir où vous devez aller: