📅  最后修改于: 2021-01-12 02:43:34             🧑  作者: Mango
迁移是一种以一致且有组织的方式随时间更改数据库架构的方法。他们使用的是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”表。它跟踪数据库的当前版本。
如果将创建新的迁移,则它将是数据库的新版本。