Por ejemplo, tengo este modelo:¿Actualizar db/migrar después de actualizar manualmente los modelos?
class Product < ActiveRecord::Base
attr_accessible :name, :order
end
Luego, cuando lo hice rake db:migrate
se creó esta db/migrar/20120825132038_create_products.rb:
class CreateProducts < ActiveRecord::Migration
def change
create_table :products do |t|
t.integer :order
t.string :name
t.timestamps
end
end
end
Pero todo esto pasó porque yo solía rails generate Product order:integer name:string
Ahora después de ir al modelo del Producto y lo cambio manualmente a:
class Product < ActiveRecord::Base
attr_accessible :name, :order, :category_id
validates :name, uniqueness: true
belongs_to :category
end
¿Cómo puedo actualizar automáticamente el db/migrate/20120825132038_create_products.rb con las actualizaciones?
Gracias por la excelente explicación! Pero cada vez que quiero agregar un atributo/propiedad (como se llame) a un modelo, necesito usar la migración de carriles g y crear una nueva clase. – Danpe
Si la migración ya se ha aplicado a la base de datos, ** sí **. Un modelo no es más que una interfaz a través de la cual puede interactuar con su base de datos. No manipula la ** estructura ** de su base de datos; para eso son las migraciones. Agregar una columna a una tabla automáticamente hará que los nuevos métodos de atributo estén disponibles dentro del modelo asociado. – deefour
Sí. Siempre cree una nueva migración, incluso para una sola columna. Nunca regrese y edite una migración anterior. Es un buen hábito! Créanme, sus futuros colegas me agradecerán por asegurarse de seguir esta práctica. –