¿Cómo establecer el valor de una nueva columna en Rails 3?

Probablemente se trate de otra pregunta, pero no puedo encontrarla.

Soy un novato relativo a Rails. Estoy tratando de agregar una nueva columna a una tabla que ya tiene datos. Esta columna no permitirá valores nulos. ¿Cuál es la forma más sencilla de actualizar todos los registros existentes para que tengan un valor en esta nueva columna? Sé que probablemente esté en el bloque superior de mi migración, pero no sé cuál sería la sintaxis.

def self.up
  change_table :reminders do |t|
    t.boolean :active
  end
  #model name is Reminder - how to update data with a value?
end

preguntado el 16 de mayo de 11 a las 19:05

2 Respuestas

Lo que puede hacer es agregar la columna, actualizar todos los registros de la tabla con el valor deseado y luego cambiarlo para que no permita valores nulos.

def self.up
  add_column :reminders, :active, :boolean, :default => true
  Reminder.update_all( "active = ?", true )
  change_column :reminders, :active, :boolean, :default => true, :null => :false
end

contestado el 17 de mayo de 11 a las 00:05

esto pareció funcionar en mi copia de desarrollo. Sin embargo, parece fallar en Heroku. - Dan Appleyard

Todo falla en Heroku :) - Arcolye

Prueba esto:

def self.up
  change_table :reminders do |t|
   t.boolean :active, :default => true #or your value
  end
#model name is Reminder - how to update data with a value?
end

contestado el 16 de mayo de 11 a las 23:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.