2011-12-26 12 views
19

Sono nuovo di Model in rail. So come creare il modello & come aggiungere una colonna. Ora voglio impostare il valore predefinito su una colonna, ma non capisco esattamente come posso farlo.come impostare il valore predefinito per la colonna nei binari durante la creazione della migrazione

ho generato nuovo modello

rails g model User 

colonna poi aggiunto ad esso

rails generate migration AddNotificationEmailToUsers notification_email:boolean 

Ora voglio impostare il valore di default della colonna di notifica come vero. Per favore guidami come scrivere la migrazione per lo stesso. Grazie!!!

risposta

44

Non si può fare questo dalla riga di comando - si dovrà modificare il file di migrazione e cambiare la linea corrispondente a qualcosa come

add_column :users, :notification_email, :boolean, :default => true 
+0

Grazie, che mi ha aiutato –

2

Federico Cheung è corretto è necessario modificare la migrazione file per questo. Solo un aggiornamento secondario aggiunge una virgola dopo il tipo di dati prima di specificare il valore predefinito.

add_column :users, :notification_email, :boolean, :default => true 
+0

Ehi ragazzi non sta funzionando per me c'è alcuna migrazione come rotaie g AddDefaultsToTablename migrazione: Tablename,: ColumnName: Valore di default? –

+0

No, non esiste un modo diretto per questo, Questo dovrebbe funzionare nel file di migrazione che viene generato, quale errore si ottiene? – PriteshJ

13

miglior approccio è quello di utilizzare change_column nella migrazione. È pubblicizzato per cambiare tipo, ma puoi usarlo per collegare una colonna predefinita alla colonna esistente.

ho avuto

location :integer 

in schema e ho voluto per difetto a zero, così ho scritto una migrazione in quanto tale:

change_column :player_states, :location, :integer, :default => 0 

Che ha fatto il trucco.

0

A partire da ora non c'è modo di specificare il valore predefinito definito attraverso il terminale nella migrazione delle rotaie.

è possibile eseguire i passaggi qui sotto per specificare il valore predefinito per una colonna

1). Execute

$ rails generate migration AddNotificationEmailToUsers notification_email:boolean 

2). Specificare il nuovo valore predefinito della colonna su TRUE/FALSE modificando il nuovo file di migrazione creato.

class AddNotificationEmailToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :notification_email, :boolean, default: true 
    end 
end 

3). Eseguire la migrazione sopra generata eseguendo.

$ rake db:migrate 
Problemi correlati