ruby-on-rails - remove - rollback migration rails
AsignaciĆ³n de valor predeterminado al crear el archivo de migraciĆ³n (4)
El generador de migración predeterminado no maneja los valores predeterminados (los modificadores de columna son compatibles pero no incluyen valores default
o null
), pero puede crear su propio generador.
También puede actualizar manualmente el archivo de migración antes de ejecutar rake db:migrate
add_column
agregando las opciones a add_column
:
add_column :tweet, :retweets_count, :integer, :null => false, :default => 0
... y leer la API Rails
rails generate migration AddRetweetsCountToTweet retweets_count:integer
Ok, uso la línea superior para crear un archivo de migración que genere código automáticamente en el archivo generado para agregar una columna a un modelo Tweet con un 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.
Intenté t.boolean: active,: default => 1 en el archivo de migración para crear toda la tabla. 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: activo,: nulo => falso,: predeterminado => 1. Trabajó para mi.
La versión de My Rails framework es 4.0.0
Sí, no pude ver cómo usar ''predeterminado'' en el comando del generador de migración, pero pude especificar un valor predeterminado para una nueva columna de cadena de la siguiente manera al modificar el archivo de migración generado antes de aplicar "rake db: migrate":
class AddColumnToWidgets < ActiveRecord::Migration
def change
add_column :widgets, :colour, :string, default: ''red''
end
end
Esto agrega una nueva columna llamada ''color'' a mi modelo ''Widget'' y establece el ''color'' predeterminado de los nuevos widgets en ''rojo''.
t.integer :retweets_count, :default => 0
... Deberia trabajar.