2011-12-26 10 views
19

Soy nuevo modelo en el rieles. Sé cómo crear el modelo & cómo agregar una columna a ellos. Ahora quiero establecer el valor predeterminado en una columna, pero no entiendo exactamente cómo puedo hacerlo.cómo establecer valor predeterminado de la columna de rieles durante la creación de la migración

que generan nuevo modelo

rails g model User 

columna luego se añadió a lo

rails generate migration AddNotificationEmailToUsers notification_email:boolean 

Ahora quiero establecer el valor predeterminado de la columna de Notificación como verdadero. Por favor, guíame sobre cómo escribir la migración para el mismo. ¡¡¡Gracias!!!

Respuesta

44

No se puede hacer esto desde la línea de comandos - que tendrá que editar el archivo de migración y cambiar la línea correspondiente a algo así como

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

Gracias, que me ayudó –

2

Frederick Cheung es correcta, se tendrá que modificar la migración archivo para esto. Solo una actualización menor agrega una coma después del tipo de datos antes de especificar el valor predeterminado.

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

Hola chicos que no está funcionando para mí ¿Hay alguna migración como rieles g AddDefaultsToTablename la migración: Tablename,: ColumnName: Valor por defecto? –

+0

No, no hay manera directa para esto, esto debería funcionar en el archivo de migración que se genera, qué error es u consigo? – PriteshJ

13

mejor enfoque aquí es utilizar change_column en su migración. Se anuncia para cambiar el tipo, pero puede usarlo para adjuntar una columna predeterminada a la existente.

tuve

location :integer 

en el esquema y quería por defecto a cero, así que escribió una migración como tal:

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

Que hizo el truco.

0

partir de ahora no hay forma de evitar que especificar el valor predeterminado definido a través del terminal en la migración de los carriles.

puede ejecutar los pasos siguientes para especificar el valor predeterminado de una columna

1). Ejecutar

$ rails generate migration AddNotificationEmailToUsers notification_email:boolean 

2). Especifique el nuevo valor predeterminado de la columna en TRUE/FALSE editando el nuevo archivo de migración creado.

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

3). Ejecutar la migración generada arriba mediante la ejecución.

$ rake db:migrate 
Cuestiones relacionadas