class EmptyMigration < ActiveRecord::Migration
def self.up
end
def self.down
end
end
我很快将介绍如何调用迁移,但是现在请看看清单 1 中的迁移结构。在这个迁移的 up 方法中,要放置进行一个逻辑数据库变化所需的全部代码。还要捕获任何变化,从而能够取消模式变化。通过封装 up 和 down ,Rails 开发和生产工具可以自动进行涉及持久性对象模型的变化的部署和回退过程。这些数据库变化可能包括:
通过封装 up 和 down 方法,Rails 开发和生产工具可以自动进行涉及持久性对象模型的变化的部署和回退过程。
添加或删除新表。
添加或删除新列。
以其他方式修改数据库,包括添加、删除或修改索引或其他约束。
修改数据库数据。
通过允许改变数据,迁移大大简化了相关数据和模式的变化的同步过程。例如,可以添加一个查询表,把每个州和州的两位数字 ZIP 代码关联起来。在迁移中,可以填充数据库表,可能通过调用 SQL 脚本或装载 fixture。如果迁移正确,那么每个迁移都会把数据库置于一个一致的状态,不需要手工干预。
每个迁移的文件名都以一个惟一的编号开头。这个约定让 Rails 可以对迁移实现很强的排序。用这个策略,可以前后转移到逻辑数据库模式的任何状态。