2011-05-29 19 views
72
rails generate migration AddRetweetsCountToTweet retweets_count:integer 

Ok Uso la línea anterior para crear el archivo de migración que genera código automáticamente en el archivo generado para agregar una columna a un modelo Tweet con tipo de datos entero. Ahora quiero agregar valor predeterminado a la columna agregada mientras genero el archivo de migración. ¿Es eso posible? Busqué en Google pero no pude encontrar. Chicos necesitan ayuda.Asignación del valor predeterminado al crear el archivo de migración

+0

consulte la RailsGuide sobre el tema: http://guides.rubyonrails.org/migrations.html la información que está buscando está en la primera sección Anatomy of a Migration –

+1

Sé exactamente lo que quiere decir. Seguí intentando establecer un valor predeterminado también, y fue una especie de dolor tratar de encontrar información. Solo generar el SQL desnudo fue más fácil, aunque no hay migración en el control de la versión. – Tass

Respuesta

124

no maneja valores por defecto (column modifiers son compatibles, pero no incluyen default o null), pero usted puede crear su propio generador.

También puede actualizar manualmente el archivo de migración antes de ejecutar rake db:migrate mediante la adición de las opciones para add_column:

add_column :tweet, :retweets_count, :integer, :null => false, :default => 0

... y leer Rails API

+9

Ok gracias por la respuesta. Pensé que sería genial si el generador de migración predeterminado proporcionara la opción de manejar los valores predeterminados para que no tenga que editar el archivo de migración después de generarlo para especificar el valor predeterminado. – kxhitiz

3

Probé t.boolean: activo, : predeterminado => 1 en el archivo de migración para crear una tabla completa. Después de ejecutar esa migración cuando registré en db lo hizo como nulo. Aunque dije por defecto como "1". Después de eso, modifiqué un poco el archivo de migración como este y funcionó para mí al establecer el valor predeterminado en el archivo de migración de tabla de creación.

t.boolean: active,: null => false,: default => 1. Trabajó para mi.

Mi rieles versión 4.0.0 marco es

+0

': default => false'? –

4

Sí, no pude ver cómo utilizar 'por defecto' en el comando generador de migración tampoco, pero era capaz de especificar un valor predeterminado para una columna nueva cadena de la siguiente por el que se modifica el archivo de migración generada antes de aplicar el "rake db: migrate":

class AddColumnToWidgets < ActiveRecord::Migration 
    def change 
    add_column :widgets, :colour, :string, default: 'red' 
    end 
end 

Esto añade una nueva columna llamada 'color' a mi modelo 'widget' y establece el 'color' por defecto de los nuevos widgets para 'roja '.

+0

(Esto estaba en Rails 4.2.) – MSC

Cuestiones relacionadas