For example i have this model:
class Product < ActiveRecord::Base
attr_accessible :name, :order
end
Then when i did rake db:migrate it created this db/migrate/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
But it all happend cuz i used rails generate Product order:integer name:string
Now after i go to Product model and changes it manually to:
class Product < ActiveRecord::Base
attr_accessible :name, :order, :category_id
validates :name, uniqueness: true
belongs_to :category
end
How can i auto update the db/migrate/20120825132038_create_products.rb with the updates?
When you ran
rake db:migrate, it did not createdb/migrate/20120825132038_create_products.rb. That migration file was created when you ranattr_accessiblehas nothing to do with migrating your database.I strongly recommend you read the Rails Guide on Migrations, as well as the section on Mass Assignment which discusses
attr_accessible.To generate a new migration file (since the one mentioned in your Question has already been processed by the previous
rake db:migratecommand you mentioned running), runThis should generate a new migration with contents like
Running
rake db:migrateagain now will process this migration file, adding the newcategory_idinteger column to yourproductstable.