rails generate migration AddRetweetsCountToTweet retweets_count:integer
Ok, j'utilise la ligne ci-dessus pour créer un fichier de migration qui génère automatiquement du code dans le fichier généré pour ajouter une colonne à un modèle de Tweet avec un entier de type de données. Maintenant, je veux ajouter une valeur par défaut à la colonne ajoutée lors de la génération du fichier de migration. Est-ce possible? Je l'ai googlé mais je n'ai pas trouvé. Les gars ont besoin d'aide.
ruby-on-rails
migration
kxhitiz
la source
la source
Réponses:
Le générateur de migration par défaut ne gère pas les valeurs par défaut (les modificateurs de colonne sont pris en charge mais n'incluent pas
default
ounull
), mais vous pouvez créer votre propre générateur.Vous pouvez également mettre à jour manuellement le fichier de migration avant de l'exécuter
rake db:migrate
en ajoutant les options àadd_column
:add_column :tweet, :retweets_count, :integer, :null => false, :default => 0
... et lisez l' API Rails
la source
... devrait marcher.
Voir le guide Rails sur les migrations
la source
Oui, je ne voyais pas non plus comment utiliser 'default' dans la commande du générateur de migration, mais j'ai pu spécifier une valeur par défaut pour une nouvelle colonne de chaîne comme suit en modifiant le fichier de migration généré avant d'appliquer "rake db: migrate":
Cela ajoute une nouvelle colonne appelée «couleur» à mon modèle «Widget» et définit la «couleur» par défaut des nouveaux widgets sur «rouge».
la source
J'ai essayé t.boolean: active,: default => 1 dans le fichier de migration pour créer une table entière. Après avoir exécuté cette migration lorsque j'ai vérifié dans db, elle a été rendue nulle. Même si j'ai dit par défaut comme "1". Après cela, j'ai légèrement modifié le fichier de migration comme celui-ci, puis cela a fonctionné pour moi pour définir la valeur par défaut sur le fichier de migration de création de table.
t.boolean: active,: null => false,: default => 1. A travaillé pour moi.
La version du framework My Rails est 4.0.0
la source
:default => false
?Vous devrez d'abord créer votre migration pour les bases du modèle, puis vous créez une autre migration pour modifier votre précédente en utilisant le change_column ...
la source