Je suis nouveau sur Model in Rails. Je sais comment créer un modèle et comment y ajouter une colonne. Maintenant, je veux définir la valeur par défaut d'une colonne, mais je ne comprends pas exactement comment je peux le faire.
J'ai généré un nouveau modèle
Rails g model User
puis ajouté une colonne
Rails generate migration AddNotificationEmailToUsers notification_email:boolean
Maintenant, je veux définir la valeur par défaut de la colonne Notification comme vraie. Veuillez me guider pour écrire la migration pour la même chose. Je vous remercie!!!
Vous ne pouvez pas le faire à partir de la ligne de commande - vous devrez modifier le fichier de migration et changer la ligne correspondante en quelque chose comme
add_column :users, :notification_email, :boolean, :default => true
La meilleure approche consiste à utiliser change_column
dans votre migration. Il est annoncé pour changer de type mais vous pouvez l'utiliser pour attacher une valeur par défaut à une colonne existante.
J'ai eu
location :integer
dans le schéma et je voulais revenir à zéro par défaut, j'ai donc écrit une migration en tant que telle:
change_column :player_states, :location, :integer, :default => 0
Cela a fait l'affaire.
Pour l'instant, il n'y a aucun moyen de spécifier la valeur par défaut définie via le terminal dans la migration Rails.
vous pouvez exécuter les étapes ci-dessous afin de spécifier la valeur par défaut d'une colonne
1). Exécuter
$ Rails generate migration AddNotificationEmailToUsers notification_email:boolean
2). Spécifiez la valeur par défaut de la nouvelle colonne sur TRUE/FALSE en modifiant le nouveau fichier de migration créé.
class AddNotificationEmailToUsers < ActiveRecord::Migration
def change
add_column :users, :notification_email, :boolean, default: true
end
end
3) .Exécuter la migration générée ci-dessus en exécutant.
$ rake db:migrate
Frederick Cheung a raison, vous devrez modifier le fichier de migration pour cela. Une mise à jour mineure ajoute une virgule après le type de données avant de spécifier la valeur par défaut.
add_column :users, :notification_email, :boolean, :default => true