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 Tweet avec un type de données entier. 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 n'ai pas pu trouver. Les gars ont besoin d'aide.
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
ni null
), mais vous pouvez créer votre propre générateur.
Vous pouvez également mettre à jour manuellement le fichier de migration avant d’exécuter rake db:migrate
en ajoutant les options à add_column
:
add_column :Tweet, :retweets_count, :integer, :null => false, :default => 0
... et lisez API Rails
Oui, je ne voyais pas non plus comment utiliser "default" dans la commande du générateur de migration, mais je pouvais spécifier une valeur par défaut pour une nouvelle colonne de chaîne, en modifiant le fichier de migration généré avant d'appliquer "rake db: migrate":
class AddColumnToWidgets < ActiveRecord::Migration
def change
add_column :widgets, :colour, :string, default: 'red'
end
end
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".
J'ai essayé t.boolean: active,: default => 1 dans le fichier de migration pour créer la table entière. Après avoir exécuté cette migration lorsque j’ai vérifié dans la base de données, elle était nulle. Même si j'ai dit par défaut que "1". Après cela, j’ai légèrement modifié le fichier de migration, ce qui a fonctionné pour moi afin de définir la valeur par défaut du fichier de migration de la table.
t.boolean: active,: null => false,: default => 1. Travaillé pour moi.
Mon Rails est 4.0.0