Managing Tables:
在Rails的Migrations中可以执行一些DDL的操作,例如新增,删除表等。先来看一段新增表的操作代码:
class CreateOrderHistories < ActiveRecord::Migration
def self.up
create_table :order_histories do |t|
t.integer :order_id, :null => false
t.text :notes
t.timestamps
end
def self.down
drop_table :order_histories
end
end
对照create_table的方法签名很容易理解这段代码:
create_table(table_name, options = {}) {|table_definition| ...}
在options的这个参数中有以下这些key-value对可以使用:
:id => 是否要生成主键;
:primary_key => 如果有主键,则作为主键的字段名。(默认为id)
:options => 其他需要在建表时指定的参数。(例如针对mysql指定数据存储引擎和字符编码)
:temporary => 建立的表为临时表
:forece => 如果创建的表已经存在,那是否要drop后再建立。(默认为false)
其中需要注意的有以下两点:
- t.timestamps方法会给表中建立两个字段:created_at和updated_at,字段类型由相应数据库类型决定。
- Rails默认使用的mysql数据引擎为InnoDB。如果在使用create_table方法时,使用了:options指定了额外参数,则Rails会使用数据库默认的数据存储引擎来建表。因此,如需继续使用InnoDB,则需要:options中显式声明。
Rename Table:
当系统重构时,需要修改某些table的名称时,我们可以使用Migrations提供的rename_table方法。使用的方法非常简单,请看以下的代码:
Class RenameOrderHistories < ActiveRecord::Migration
def self.up
rename_table :order_histories, :order_notes
end
def self.down
rename_table :order_notes, :order_histories
end
end
rename_table方法签名的第一个参数为原表名,第二个参数为需要改成的表名。
Problems with rename_table:
当使用rename_table方法时,可以能在Migrations时面临一些小问题。假设我们在第四个migrations中新建了order_histories表,并填充了一些测试数据,具体代码如下:
def self.up
create_table :order_histories do |t|
t.integer :order, :null => false
t.text :notes
t.timestamps
end
order = Order.find :first
OrderHistories.create(:order_id => order, :notes => "test")
end
而在第七次的migrations中将order_histories表改名为order_notes。在过了一段时间后,你决定drop掉整个开发环境
的数据库,然后从头执行所有的migrations文件。于是在执行第四个migrations文件时,Rails会报错,因为找不到
OrderHistories这个model类了,(现在叫OrderNotes了)。
针对这个问题,Tim Lucas有个简单的处理方法。即在migration的文件中建立OrderNotes和OrderHistories两个类的"哑"类。(即没有任何功能性代码的类)这样在undo这个migration时就不会报错了。
分享到:
- 2008-11-24 13:09
- 浏览 1118
- 评论(0)
- 论坛回复 / 浏览 (0 / 1636)
- 查看更多
相关推荐
gem "mongoid_rails_migrations" 如何使用 创建迁移 $ rails generate mongoid:migration 运行迁移: $ rails db:migrate $ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback...
mongoid_rails_migrations, Mongoid的数据迁移 发行说明最新版本,1.1. x, 目标 Mongoid> = 4.0.0和 Rails> = 4.2.0.对于 Rails> = 3.2.0和 Mongoid> = 3.0.0,使用版本 1.0.0.
在Ruby on Rails中文指南中,你将全面学习到如何利用这个强大的框架来构建动态的、数据驱动的Web应用程序。 首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图...
适用于Nova的Rails迁移扩展提供命令以轻松访问Rails项目中的迁移。特征快速打开最新的Rails迁移从您的迁移列表中选择一个特定的迁移安装下载最新。 解压缩档案。 双击RailsMigrations.novaextension将扩展安装在Nova...
12. **Migrations**:Rails的迁移机制允许开发者通过Ruby代码来管理数据库结构的变化,使得数据库版本控制变得简单。 学习Rails指南中文版,开发者将全面了解Rails的各个方面,包括基础概念、核心组件、最佳实践...
7. **Migrations and Database Schema**: 书中详细讲解了如何使用Rails的迁移(migrations)来管理数据库结构的变化,以及如何编写有效的数据库模式(schema)。 8. **Testing**: 对于Rails应用,测试是必不可少的一...
2. **数据库迁移(Database Migrations)**:Rails使用ActiveRecord和SQLite、MySQL或PostgreSQL等数据库系统交互。开发者通过编写迁移文件来定义和修改数据库结构。 3. **路由(Routing)**:Rails的路由系统根据...
此外,Rails的迁移(Migrations)系统允许你对数据库结构进行修改,如创建新表: ```bash rake db:create # 创建数据库 rake db:migrate # 应用迁移文件,生成对应的数据库表 ``` Rails的scaffold命令是一个强大的...
- **数据库迁移(Database Migrations)**:Rails使用迁移来管理数据库结构的变化。通过`rails generate migration AddTitleToPosts title:string`创建迁移,然后运行`rails db:migrate`执行迁移。 - **...
- 探讨了组件化应用中的迁移(Migrations)管理,也就是如何在组件内处理数据表的迁移。 5. 组件类型: - 书中可能会提到不同类型的Rails引擎,比如Plain Engine、Full Engine和Mountable Engine,并解释它们之间...
在Rails中,Ruby的元编程能力使得框架能够灵活地自定义和扩展。 Rails的核心理念是DRY(Don't Repeat Yourself),鼓励代码重用,避免重复编写相似的代码。此外,它还提供了大量的内置功能和库,如ActiveRecord用于...
在Rails项目中,我们首先需要了解的是项目的目录结构。一个标准的Rails应用会包含以下关键部分: 1. **app**:应用程序的核心,包括模型(models)、视图(views)和控制器(controllers)。模型负责业务逻辑和数据...
4. **Rails 数据库迁移(Migrations)**: Migrations 是 Rails 中用于数据库结构版本控制的工具。它们允许开发者以编程方式添加、修改或删除表列,而不必直接操作 SQL。文件将涵盖创建、运行和回滚迁移,以及使用 `...
在Rails中,可以配置数据库连接信息,使用`database.yml`文件。安装MySQL后,通过Gemfile中的`gem 'mysql2'`来添加MySQL驱动,接着运行`bundle install`安装依赖。 4. **Rails基础知识** - **模型(Model)**:...
该文档详细介绍了Rails 2.1版本中引入的新特性和改进之处,对于Rails开发者来说,是一份非常有价值的参考资料。 #### 新特性介绍 **时间区(Timezones)** Rails 2.1增加了对时区的支持,这意味着应用程序可以更...
6. **数据库迁移(Database Migrations)**:Rails提供了方便的工具来创建和更新数据库结构。购物车功能可能涉及到创建新的表,如`cart_items`和`orders`。 7. **测试(Testing)**:为了确保代码的健壮性和正确性...
本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习Rails的宝贵资源,帮助初学者快速掌握这个强大的框架。 1. **Rails基础知识**: - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器...
在Rails中,`模型`负责处理数据和业务逻辑,`视图`负责展示用户界面,而`控制器`则作为模型和视图之间的桥梁,处理用户请求并协调它们之间的交互。Rails的许多特性,如ActiveRecord(ORM)、ActiveModel、Action...
3. **数据库迁移(Migrations)**:Rails提供了一种方便的方式来管理数据库结构的改变,即迁移。在`db/migrate`目录下创建迁移文件,通过运行`rake db:migrate`命令,你可以同步数据库结构与应用的模型。 4. **视图...