本文概述
迁移是一种以一致且有组织的方式随时间更改数据库架构的方法。他们使用的是Ruby DSL, 无需手工编写SQL。
可以手动编辑SQL片段, 但随后你必须将所做的更改告知其他开发人员, 然后运行它们。你需要跟踪下次部署时需要在生产计算机上运行的更改。
每次迁移都是数据库的新版本。每次迁移都会通过添加或删除表, 列或条目来修改数据库。活动记录将更新你的db / schema.rb文件, 以匹配数据库的最新结构。
迁移目的
在使用之前, 了解迁移的目的很重要。数据库在所有Web应用程序中使用。
通常, SQL语句用于运行数据库查询以创建, 修改, 读取或删除数据库的列。
迁移文件包含一组有关如何创建数据库的特定说明。运行该文件时, Rails将自动在数据库中进行更改。逐渐地, 迁移文件将充当数据库更改方式的版本历史记录。这意味着你将能够从指令集文件中重新创建数据库。
创建迁移文件
创建迁移文件的语法:
application_dir> rails generate migration table_name
这将创建一个名为db / migrate / 001_table_name.rb的文件。迁移文件包含数据库表的基本数据结构。
建议在运行迁移生成器之前, 清理由模型生成器生成的现有迁移。
例:
让我们在应用程序教程中创建一个名为java的迁移。
rails generate migration java
编辑代码
转到教程应用程序中的db / migrate目录。在当前文件001_java.rb中写入followig代码,
class Java < ActiveRecord::Migration
def self.up
create_table :java do |t|
t.column :title, :string, :limit => 32, :null => false
t.column :fee, :float
t.column :duration, :integer
t.column :index, :string
t.column :created_at, :timestamp
end
end
def self.down
drop_table :java
end
end
在迁移到新版本时使用self.up方法, 并在需要时使用self.down方法回滚所有更改。
运行迁移
创建所有必需的迁移文件后, 你需要执行它们。要针对数据库执行迁移文件, 请运行以下代码:
rake db:migrate
如果不存在, 它将创建一个” schema_info”表。它跟踪数据库的当前版本。
如果将创建新的迁移, 则它将是数据库的新版本。