`
cowoo
  • 浏览: 48807 次
  • 性别: Icon_minigender_1
社区版块
存档分类

Rails Migration

阅读更多
一直知道rails里面用migrate来进行数据库的版本控制,还是比较浅显易懂,做做笔记。

RoR的官方Wiki上有两篇文章:
http://wiki.rubyonrails.com/rails/pages/UnderstandingMigrations
http://wiki.rubyonrails.com/rails/pages/UsingMigrations


如何使用:
1. Create a migration
ruby 代码
  1. ruby script/generate migration description_of_migration  

命名提示:
a.Migration的命名规则和model,controller一样
b.给一个mingration取一个和已经有的model类一样的名字会导致rake db:migrate诡异地失败(??未测试)
 
2. Edit the code to tell it what to do.

Edit the newly created file (in db/migrate). Define the up and a down methods.

3. Run the migration with Rake

ruby 代码
 
  1. rake db:migrate  


Tables
create_table
一个ID字段(主健)会被自动创建,对于has_and_belongs_to_many表来说,可以用:id=>false来取消


 
ruby 代码
 
  1. class AddTags < ActiveRecord::Migration  
  2.     def self.up  
  3.       create_table :images_tags:id => false do |table|  
  4.         table.column :image_id:integer  
  5.         table.column :tag_id:integer  
  6.       end  
  7.       create_table :tags do |table|  
  8.         table.column :name:string  
  9.       end  
  10.     end  
  11.   
  12.     def self.down  
  13.       drop_table :tags  
  14.       drop_table :images_tags  
  15.     end  
  16.   end  

 
合法的字段类型包括:integer, float, datetime, date, timestamp, time, text, string, binary, and boolean. 合法的字段选项包括:limit, null (比如说 :null => false 表示 NOT NULL), 以及 default (来设定默认值).

create_table可以有很多参数(见API参考)。有一个是options,可以将用原始的sql语句来添加到表后面作限制,比如说字符编码,表的类型等,比如:

ruby 代码
 
  1. create_table(:families:options => 'DEFAULT CHARSET=UTF8') do |t|  


 Columns
 Migrations work with columns in create_table and also with add_column.

 Options when running rake db:migrate

 Migrate to a specific version
ruby 代码
 
  1. rake db:migrate VERSION=17  

 
 Migrate a specific database
ruby 代码
 
  1. rake environment RAILS_ENV=production db:migrate  
分享到:
评论
3 楼 zgw06629 2009-02-04  
应在rails工程目录下
2 楼 xujun2008 2007-09-17  
运行rake出错,可能是rakefile的路径没找到.
你试试在rails应用的根目录下执行rake命令。
1 楼 gaofan 2007-07-26  
我运行rake就出错:
rake aborted!
no rakefile find

怎么回事啊

相关推荐

    rails-auto-migrate:用于Rails的VSCode扩展,可监视迁移文件夹中的新文件夹,打开最新的迁移文件并自动运行迁移

    要运行迁移,请单击“ Run Rails Migration $ bundle exec rake db:migrate 已知的问题 没有任何 发行说明 1.0.0 最初发布的rails-auto-migrate 1.0.2 修复自动迁移 想要查询更多的信息 享受!

    Ruby on Rails入门例子

    通过`rails generate migration AddTitleToPosts title:string`创建迁移,然后运行`rails db:migrate`执行迁移。 - **ActiveRecord查询接口(Query Interface)**:ActiveRecord提供了丰富的查询API,如`User.find...

    Ruby+for+Rails

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

    rails 项目起步示例

    - **Database Migration**:数据库结构的变化会通过迁移文件来实现,运行`rake db:migrate`进行更新。 - ** erb**:ERB(Embedded Ruby)是Rails中的视图模板语言,允许在HTML中嵌入Ruby代码。 - **Helper**:辅助...

    ruby_on_rails 源代码上

    使用`rails generate migration`命令可以创建新的迁移,然后通过`rails db:migrate`命令应用这些变化。 9. **测试驱动开发(TDD)** Rails鼓励使用TDD,提供Rspec和Test::Unit等测试框架。开发者应先编写测试,然后...

    应用Rails进行敏捷Web开发中文第三版

    2. **数据库迁移**:了解如何使用ActiveRecord的迁移工具(Migration)来修改数据库结构,如添加、删除或修改字段。 3. **路由**:Rails的路由系统如何将URL映射到特定的控制器和动作,以及如何自定义路由规则。 4...

    rails配置sqlserver2000

    rails g migration CreateTableName ``` 在生成的迁移文件中编写你的SQLServer 2000兼容的表结构,然后运行迁移: ```bash rails db:migrate RAILS_ENV=sqlserver2000 ``` 如果一切顺利,你现在应该能够使用Rails...

    Rails预加载程序Spring-Rails.zip

    Spring是Rails的预加载器。Spring 能够通过保持应用运行在后台,来提升开发模式下的速度。使得不需要在执行test,rake task以及migration时每次都加载。 标签:Spring

    ruby on rails 教程

    文档深入探讨了Rails中的数据库迁移(Migration)机制,解释了为何要使用Migration,即通过一系列预定义的脚本来更新数据库结构,而不直接修改数据库表。Migration提供了一种安全、可控的方式来管理和记录数据库模式...

    ruby on rails 实例depot

    创建新模型后,使用`rails generate migration`创建迁移文件,定义数据库表的字段和结构,然后运行`rails db:migrate`执行迁移。 6. **控制器(Controllers)**:控制器处理HTTP请求并调用模型进行业务处理。比如,...

    ruby on rails入门

    - **定义数据库表**:使用 `rails generate migration CreateTodos title:string description:text` 命令来生成迁移文件,然后运行 `rails db:migrate` 来更新数据库。 - **创建控制器**:使用 `rails generate ...

    ruby on rails轻松使用

    14. **数据库迁移(Database Migrations)**: 当数据库结构需要变化时,使用`rails generate migration`创建迁移文件,然后通过`rails db:migrate`来执行迁移。 15. **Rails Console**: 交互式的命令行工具,可以...

    rails教程

    7. **数据库迁移**:使用`rails generate migration`创建数据库迁移,可以方便地修改数据库结构,这些更改会在数据库中同步。 8. **erb模板**:Rails中的视图通常由ERB(Embedded Ruby)模板构成,它允许在HTML中...

    ruby on rails开发

    9. **数据库迁移(Database Migration)** Rails使用ActiveRecord库处理数据库操作。在`db/migrate`目录下,你可以编写迁移文件来修改数据库结构。使用`rails db:migrate`命令执行迁移。 10. **测试(Testing)** ...

    rails有用的命令

    `rails g migration AddColumnToTableName column_name:type`会生成一个新迁移,添加指定列到指定表。 9. **Scaffold**: - `rails generate scaffold Product title:string description:text image_url:string`:...

    ruby on rails入门基础

    - 通过创建迁移文件来改变数据库结构,`rails generate migration`命令用于生成迁移,然后在迁移文件中添加数据库操作,最后运行`rake db:migrate`执行迁移。 10. **Scaffolding**: - Rails的scaffolding功能...

    应用rails进行敏捷web开发

    5. **Rails发电机**:用于自动化生成代码,如model、controller、migration等,提高开发效率。 6. **Migrations**:数据库版本控制,允许开发者以声明式的方式对数据库结构进行修改,便于团队协作和数据库迁移。 7...

    Apress.Beginning.Rails.3

    - **数据库迁移**:使用Rails提供的Migration功能来进行数据库表结构的升级和降级。 - **模板系统**:掌握ERB(Embedded Ruby)模板语法,实现动态页面的渲染。 - **单元测试**:编写测试用例确保代码质量,使用...

    ruby on rails guides for rails4.0.3(英文mobi版)

    从官网上下载的最新的rails4.0.3开发教材。不足之处是mobi版的,需要kindle阅读器,好在这个阅读器也是免费的。

Global site tag (gtag.js) - Google Analytics