Rails: Modificación de un Modelo Generado por Andamios


¿Cómo modificar un modelo que ha generado usando modelado? Por ejemplo, el modelo MyModel originalmente tenía columnas a, b y c, pero ahora quiero agregar la columna d.

Author: Andrew Hampton, 2009-02-10

3 answers

Los carriles 3 y superiores usan el siguiente código :

rails generate migration add_fieldname_id_to_tablename fieldname:string

Carriles 2

ruby script/generate migration add_fieldname_to_tablename fieldname:string 

Esto ya no funciona y devuelve el siguiente error en Rails 3:

Ruby: No hay tal archivo o directorio script script/generate (LoadError)

 25
Author: BookOfGreg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-27 16:17:38
ruby script/generate migration add_fieldname_to_tablename fieldname:string

Este es el método de acceso directo para hacer exactamente lo que desea. si necesitas más control, o si tienes muchas columnas que agregar, la respuesta de Andrew H también funcionará bien.

 19
Author: Luke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-02 21:49:23

La mejor respuesta que he encontrado hasta ahora es ejecutar esto desde la raíz de su proyecto:

ruby script/generate migration add_d_column_to_myModel 

Luego edite el nuevo archivo de migración ubicado en db/migration para que se vea algo como:

  def self.up
    add_column :myModel, :d, :string
  end

  def self.down
    remove_column :myModel, :d
  end

El último paso será actualizar sus vistas en consecuencia.

Respuesta encontrada aquí

Funciones de tabla encontradas aquí

 12
Author: Andrew Hampton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-10 02:05:19