- 学习 Ruby on Rails
- Rails 2.1 主页
- Rails 2.1 简介
- 导轨 2.1 安装
- Rails 2.1 框架
- Rails 2.1 目录结构
- Rails 2.1 示例
- Rails 2.1 数据库设置
- Rails 2.1 活动记录
- Rails 2.1 迁移
- Rails 2.1 控制器
- Rails 2.1 视图
- Rails 2.1 布局
- Rails 2.1 脚手架
- Rails 2.1 和 AJAX
- Rails 2.1 上传文件
- Rails 2.1 发送电子邮件
- 高级 Ruby on Rails 2.1
- Rails 2.1 RMagick 指南
- Rails 2.1 基本 HTTP 身份验证
- Rails 2.1 错误处理
- Rails 2.1 路线系统
- Rails 2.1 单元测试
- 高级 Ruby on Rails 2.1
- Rails 2.1 提示与技巧
- 快速参考指南
- 快速参考指南
- Ruby on Rails 2.1 有用资源
- Ruby on Rails 2.1 - 资源
- Ruby on Rails 2.1 - 讨论
Ruby on Rails 2.1 - 迁移
Rails Migration 使用 Ruby 定义对数据库模式的更改,从而可以使用版本控制系统来保持与实际代码的同步。
它有很多用途,例如 -
开发人员团队 - 如果一个人进行架构更改,其他开发人员只需更新并运行“rake migrate”。
生产服务器 - 当您推出新版本时运行“rake migrate”以使数据库也保持最新。
多台机器 - 如果您在台式机和笔记本电脑上进行开发,或者在多个位置进行开发,迁移可以帮助您保持它们全部同步。
Rails 迁移可以做什么?
创建表(名称,选项)
drop_table(名称)
重命名表(旧名称,新名称)
add_column(表名、列名、类型、选项)
重命名列(表名,列名,新列名)
更改列(表名、列名、类型、选项)
删除列(表名,列名)
add_index(表名,列名,索引类型)
删除索引(表名,列名)
迁移支持所有基本数据类型- 字符串、文本、整数、浮点、日期时间、时间戳、时间、日期、二进制和布尔 -
string - 用于小数据类型,例如标题。
text - 用于较长的文本数据,例如描述。
text - 用于较长的文本数据,例如描述。
整数- 表示整数。
float - 用于小数。
日期时间和时间戳- 将日期和时间存储到列中。
日期和时间- 仅存储日期或仅存储时间。
二进制- 用于存储图像、音频或电影等数据。
布尔值- 用于存储真值或假值。
有效的列选项是 -
限制(:限制=>“50”)
默认(:默认=>“废话”)
null (:null => false 意味着NOT NULL )
注意- Rails Migration 完成的活动可以使用任何前端 GUI 或直接在 SQL 提示符下完成,但 Rails Migration 使所有这些活动变得非常容易
有关这些的详细信息,请参阅Rails API 。
创建迁移
这是创建迁移的通用语法 -
C:\ruby\application> ruby script/generate migration table_name
这将创建文件 db/migrate/001_table_name.rb。迁移文件包含描述数据库表的数据结构的基本 Ruby 语法。
注意- 在运行迁移生成器之前,建议清理模型生成器生成的现有迁移。
我们将创建与我们的三个表(书籍和主题)相对应的两个迁移。。
C:\ruby> cd library C:\ruby\library> ruby script/generate migration books C:\ruby\library> ruby script/generate migration subjects
请注意,您在创建迁移时使用小写字母表示书籍和主题,并使用复数形式。这是每次创建迁移时都应该遵循的 Rails 范例。-
编辑代码告诉它做什么
转到应用程序的 db/migrate 子目录,并使用任何简单的文本编辑器一一编辑每个文件。
修改 001_books.rb 如下 -
ID 列将自动创建,因此也不要在此处执行此操作。
class Books < ActiveRecord::Migration def self.up create_table :books do |t| t.string :title, :limit => 32, :null => false t.float :price t.integer :subject_id t.text :description t.timestamp :created_at 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.string :name 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
上面的脚本将用于创建主题表;它将在主题表中创建五个记录。
运行迁移
现在您已经创建了所有必需的迁移文件,是时候针对数据库执行它们了。为此,请转到命令提示符并打开应用程序所在的库目录,然后输入rake migrate ,如下所示 -
C:\ruby\library> rake db:migrate
如果不存在,这将创建一个“schema_info”表,该表跟踪数据库的当前版本。每个新迁移都将是一个新版本,并且任何新迁移都将运行,直到您的数据库处于当前版本。
Rake 是一个类似于 Unix make 程序的 Ruby 构建程序,Rails 利用它来简化复杂任务的执行,例如更新数据库结构等。
运行生产和测试数据库的迁移
如果您想指定用于迁移的 Rails 环境,请使用 RAILS_ENV shell 变量。
例如 -
C:\ruby\library> set RAILS_ENV=production C:\ruby\library> rake db:migrate C:\ruby\library> set RAILS_ENV=test C:\ruby\library> rake db:migrate C:\ruby\library> set RAILS_ENV=development C:\ruby\library> rake db:migrate
注意- 在 Unix 上,使用“export RAILS_ENV=Production”而不是set命令。
下一步是什么?
现在我们有了数据库和所需的表。在后续的两章中,我们将探讨两个重要的组件,称为控制器(ActionController)和视图(ActionView)。
- 创建控制器(动作控制器)
- 创建视图(操作视图)