- Ruby on Rails 教程
- Ruby on Rails - 首页
- Ruby on Rails - 简介
- Ruby on Rails - 安装
- Ruby on Rails - 框架
- Ruby on Rails - 目录结构
- Ruby on Rails - 示例
- Ruby on Rails - 数据库设置
- Ruby on Rails - Active Records
- Ruby on Rails - 迁移
- Ruby on Rails - 控制器
- Ruby on Rails - 路由
- Ruby on Rails - 视图
- Ruby on Rails - 布局
- Ruby on Rails - 脚手架
- Ruby on Rails - AJAX
- Ruby on Rails - 文件上传
- Ruby on Rails - 发送邮件
- Ruby on Rails 资源
- Ruby on Rails - 参考指南
- Ruby on Rails - 快速指南
- Ruby on Rails - 资源
- Ruby on Rails - 讨论
- Ruby 教程
- Ruby 教程
Ruby on Rails - 迁移
Rails Migration 允许您使用 Ruby 定义数据库模式的更改,从而可以使用版本控制系统使数据库结构与实际代码保持同步。
这有很多用途,包括:
开发人员团队 - 如果一个人进行模式更改,其他开发人员只需更新并运行“rake migrate”。
生产服务器 - 当您推出新版本时运行“rake migrate”,以使数据库也更新到最新状态。
多台机器 - 如果您在桌面和笔记本电脑上或多个位置进行开发,迁移可以帮助您使它们全部保持同步。
Rails Migration 可以做什么?
- create_table(name, options)
- drop_table(name)
- rename_table(old_name, new_name)
- add_column(table_name, column_name, type, options)
- rename_column(table_name, column_name, new_column_name)
- change_column(table_name, column_name, type, options)
- remove_column(table_name, column_name)
- add_index(table_name, column_name, index_type)
- remove_index(table_name, column_name)
迁移支持所有基本数据类型 - 以下是迁移支持的数据类型列表:
string - 用于小型数据类型,例如标题。
text - 用于较长的文本数据,例如描述。
integer - 用于整数。
float - 用于小数。
datetime 和 timestamp - 将日期和时间存储到列中。
date 和 time - 只存储日期或时间。
binary - 用于存储图像、音频或视频等数据。
Boolean - 用于存储真或假值。
有效的列选项是 - 以下是有效的列选项列表。
limit ( :limit => “50” )
default (:default => “blah” )
null (:null => false 表示 NOT NULL)
注意 - Rails Migration 执行的操作可以使用任何前端 GUI 或直接在 SQL 提示符中执行,但 Rails Migration 使所有这些操作变得非常容易。
有关这些内容的详细信息,请参阅 Rails API。
创建迁移
以下是创建迁移的通用语法:
application_dir> rails generate migration table_name
这将在 db/migrate/001_table_name.rb 中创建文件。迁移文件包含描述数据库表数据结构的基本 Ruby 语法。
注意 - 在运行迁移生成器之前,建议清理模型生成器生成的现有迁移。
我们将创建两个与我们的三个表相对应的迁移 - books 和 subjects。
Books 迁移应如下所示:
tp> cd library library> rails generate migration books
以上命令生成以下代码。
Subject 迁移应如下所示:
tp> cd library library> rails generate migration subjects
以上命令生成以下代码。
请注意,在创建迁移时,您使用的是 book 和 subject 的小写形式以及复数形式。这是一种 Rails 范式,每次创建迁移时都应遵循。
编辑代码
转到应用程序的 db/migrate 子目录,并使用任何简单的文本编辑器逐个编辑每个文件。
修改 001_books.rb 如下所示:
ID 列将自动创建,因此也不要在这里创建它。
class Books < ActiveRecord::Migration def self.up create_table :books do |t| t.column :title, :string, :limit => 32, :null => false t.column :price, :float t.column :subject_id, :integer t.column :description, :text t.column :created_at, :timestamp end end def self.down drop_table :books end end
self.up 方法用于迁移到新版本,self.down 方法用于在需要时回滚任何更改。此时,上述脚本将用于创建books 表。
修改 002_subjects.rb 如下所示:
class Subjects < ActiveRecord::Migration def self.up create_table :subjects do |t| t.column :name, :string end Subject.create :name => "Physics" Subject.create :name => "Mathematics" Subject.create :name => "Chemistry" Subject.create :name => "Psychology" Subject.create :name => "Geography" end def self.down drop_table :subjects end end
上述脚本将用于创建subjects 表,并在 subjects 表中创建五条记录。
运行迁移
现在您已创建所有必需的迁移文件。是时候将它们针对数据库执行了。为此,请转到命令提示符并转到应用程序所在的库目录,然后键入rake migrate,如下所示:
library> rake db:migrate
这将在不存在的情况下创建一个“schema_info”表,该表跟踪数据库的当前版本 - 每个新的迁移将是一个新版本,并且将运行任何新的迁移,直到您的数据库达到当前版本。
Rake 是一个类似于 Unix make 程序的 Ruby 构建程序,Rails 利用它来简化执行复杂任务(例如更新数据库结构等)。
为生产和测试数据库运行迁移
如果您想指定要用于迁移的 Rails 环境,请使用 RAILS_ENV shell 变量。
例如:
library> export RAILS_ENV = production library> rake db:migrate library> export RAILS_ENV = test library> rake db:migrate library> export RAILS_ENV = development library> rake db:migrate
注意 - 在 Windows 中,使用“set RAILS_ENV = production”代替export命令。
接下来是什么?
现在我们有了数据库和所需的表。在接下来的两章中,我们将探讨两个重要的组件,即控制器(ActionController)和视图(ActionView)。
- 创建控制器(Action Controller)。
- 创建视图(Action View)。