`
苹果侠
  • 浏览: 11601 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Rails中的Migrations(一)

阅读更多

Rails中的DB Migration是通过db/migrate下的rb脚本来完成的。这些migrate的脚本可以通过手动来维护,但是推荐的方法应该让Rails自己来生成相应的rb文件。在Rails中有两种方式来生成:

   1. 使用generator生成model时,同时生成对应这个model的migrate文件。例如:ruby script/generate model discount。(如果使用--skip-migration的选项则不会生成相应的migrate文件)
   2. 直接使用generator来生成migrate文件,例如:ruby script/generate migration add_price_column。
migrate 文件的名称有14位的数字开头,即所谓的UTC时间(起首4位数字表示年份,然后以5组2位数字分别表示月份,日期,小时,分钟,秒数)加下划线,加上这个文件中使用的类的名称。类名称中的单词以下划线分隔。如果该migrate文件是由generate model产生的,则名称为create_加上model的复数形式。如果是由generator直接产生的则以generate命令后的参数决定。(例如:ruby script/generate migration add_price_column中产生的名称就为add_price_column)。

 

rake db:migrate

 

Rails在数据库中会维护一张 表:schema_migrations。这张表中只有一个字段:version,里面存储的是db/migrate目录下的已经成功执行的 migrate的文件的UTC编号。当执行rake db:migrate是,Rails会查看数据库中有没有schema_migrations这张表,如果没有就会建立这张表.然后会取出这张表中的所有 的记录,即UTC编号,与db/migrate目录下的文件进行比较.如果db/migrate目录下存在数据库中没有记录的migrate文件,就会按 照顺序进行执行,并在数据库中插入相应的记录.

执行某个特定的migrate文件

 

如果需要执行db/migrate目录下的某个特定的migrate文件,可以使用VERSION参数,例如rake db:migrate VERSION=20080601000010
如果使用VERSION执行某个特定的migrate文件时,Rasil会按照以下的顺序进行工作:
当指定的VERSION参数比schema_migrations表中存储的最大UTC还要大,则会直接执行制定VERSION的那个migrate文件.
当指定的VERSION参数比schema_migrations表中存储的某些记录小,情况则会有些不同.Rails会从数据库中找出那些UTC编号比制定VERSION大的那些记录,并按照UTC编号从大到小undo 这些migrate文件.

 

分享到:
评论

相关推荐

    mongoid_rails_migrations:Mongoid的数据迁移

    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的数据迁移.zip

    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中文指南

    7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...

    rails指南 中文版

    12. **Migrations**:Rails的迁移机制允许开发者通过Ruby代码来管理数据库结构的变化,使得数据库版本控制变得简单。 学习Rails指南中文版,开发者将全面了解Rails的各个方面,包括基础概念、核心组件、最佳实践...

    nova-rails-migrations:提供命令以轻松访问Rails项目中的迁移

    特征快速打开最新的Rails迁移从您的迁移列表中选择一个特定的迁移安装下载最新。 解压缩档案。 双击RailsMigrations.novaextension将扩展安装在Nova中。用法要快速打开最新的迁移,请执行以下操作: 打开命令面板Cmd...

    中文版rails教程

    2. **数据库迁移(Database Migrations)**:Rails使用ActiveRecord和SQLite、MySQL或PostgreSQL等数据库系统交互。开发者通过编写迁移文件来定义和修改数据库结构。 3. **路由(Routing)**:Rails的路由系统根据...

    Rails3常用命令行命令

    此外,Rails的迁移(Migrations)系统允许你对数据库结构进行修改,如创建新表: ```bash rake db:create # 创建数据库 rake db:migrate # 应用迁移文件,生成对应的数据库表 ``` Rails的scaffold命令是一个强大的...

    component base rails applications

    - Rails引擎是一种包含特定功能集的Rails应用,它可以被挂载到一个主应用中。 - 引擎路由(Engine Routes)定义了引擎中各个组件的路由规则,使主应用能够通过路由访问引擎的功能。 - 引擎挂载(Engine Mounting...

    Ruby on Rails实例开发

    在实例开发过程中,我们可能首先会设置一个新的Rails项目,通过`rails new`命令创建基础结构。接着,使用Rails的生成器创建控制器、模型和视图,如`rails generate controller`或`rails generate model`。然后,配置...

    Ruby on Rails入门例子

    - **数据库迁移(Database Migrations)**:Rails使用迁移来管理数据库结构的变化。通过`rails generate migration AddTitleToPosts title:string`创建迁移,然后运行`rails db:migrate`执行迁移。 - **...

    rails向导打包

    4. **Rails 数据库迁移(Migrations)**: Migrations 是 Rails 中用于数据库结构版本控制的工具。它们允许开发者以编程方式添加、修改或删除表列,而不必直接操作 SQL。文件将涵盖创建、运行和回滚迁移,以及使用 `...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...

    Ruby+for+Rails

    `rails generate migration AddColumnToBooks column:type`会生成一个新的迁移文件,然后通过`rails db:migrate`执行迁移,更新数据库。 7. **路由(Routing)** Rails的路由系统将URL映射到控制器的动作上,定义...

    web开发之rails最新调试通过购物车代码

    本压缩包中的"web开发之rails最新调试通过购物车代码"是关于使用Rails进行Web应用开发的一个实例,特别是针对购物车功能的实现。 购物车是电商网站的核心部分,它允许用户选择商品并保存这些选择以便后续购买。在...

    Agile Web Development With Ruby On Rails EN第一版

    书中可能会深入讨论Migrations,这是Rails提供的一个强大的工具,用于数据库结构的版本控制和迁移。 另外,书中可能还会讲解Rails的插件和gem的使用,如Devise用于用户认证,CanCanCan进行权限控制,或者Paperclip...

    Agile Web Development with Rails 4th edition(敏捷Web开发与Rails:程序指南 第四版)

    7. **Migrations and Database Schema**: 书中详细讲解了如何使用Rails的迁移(migrations)来管理数据库结构的变化,以及如何编写有效的数据库模式(schema)。 8. **Testing**: 对于Rails应用,测试是必不可少的一...

    RAILS2.1的中文版资料

    该文档详细介绍了Rails 2.1版本中引入的新特性和改进之处,对于Rails开发者来说,是一份非常有价值的参考资料。 #### 新特性介绍 **时间区(Timezones)** Rails 2.1增加了对时区的支持,这意味着应用程序可以更...

    Ruby on Rails入门经典代码

    通过学习和实践压缩包中的"Ruby on Rails入门经典代码",新手不仅可以了解Rails的基本概念,还能掌握实际项目中的应用技巧,逐步成长为一名熟练的Rails开发者。记得不断探索、实践和学习新的Rails知识,以适应不断...

    Ruby on Rails入门经典-例子

    3. **数据库迁移(Migrations)**:Rails提供了一种方便的方式来管理数据库结构的改变,即迁移。在`db/migrate`目录下创建迁移文件,通过运行`rake db:migrate`命令,你可以同步数据库结构与应用的模型。 4. **视图...

Global site tag (gtag.js) - Google Analytics