ruby在创建数据库前要创建迁移。下面就是创建迁移的方法。
迁移文件存储在 db/migrate
文件夹中,每个迁移保存在一个文件中。文件名采用 YYYYMMDDHHMMSS_create_products.rb
形式,即一个 UTC 时间戳后加以下划线分隔的迁移名。迁移的类名(驼峰式)要和文件名时间戳后面的部分匹配。例如,在 20080906120000_create_products.rb
文件中要定义 CreateProducts
类;在 20080906120001_add_details_to_products.rb
文件中要定义 AddDetailsToProducts
类。文件名中的时间戳决定要运行哪个迁移,以及按照什么顺序运行。从其他程序中复制迁移,或者自己生成迁移时,要注意运行的顺序。
自己计算时间戳不是件简单的事,所以 Active Record 提供了一个生成器:
$ rails generate migration AddPartNumberToProducts
这个命令生成一个空的迁移,但名字已经起好了:
class AddPartNumberToProducts < ActiveRecord::Migration def change end end
如果迁移的名字是“AddXXXToYYY”或者“RemoveXXXFromYYY”这种格式,而且后面跟着一个字段名和类型列表,那么迁移中会生成合适的 add_column
或 remove_column
语句。
$ rails generate migration AddPartNumberToProducts part_number:string
这个命令生成的迁移如下:
class AddPartNumberToProducts < ActiveRecord::Migration def change add_column :products, :part_number, :string end end
如果想为新建的字段创建添加索引,可以这么做:
$ rails generate migration AddPartNumberToProducts part_number:string:index
这个命令生成的迁移如下:
class AddPartNumberToProducts < ActiveRecord::Migration def change add_column :products, :part_number, :string add_index :products, :part_number end end
类似地,还可以生成删除字段的迁移:
$ rails generate migration RemovePartNumberFromProducts part_number:string
这个命令生成的迁移如下:
class RemovePartNumberFromProducts < ActiveRecord::Migration def change remove_column :products, :part_number, :string end end
迁移生成器不单只能创建一个字段,例如:
$ rails generate migration AddDetailsToProducts part_number:string price:decimal
生成的迁移如下:
class AddDetailsToProducts < ActiveRecord::Migration def change add_column :products, :part_number, :string add_column :products, :price, :decimal end end
如果迁移名是“CreateXXX”形式,后面跟着一串字段名和类型声明,迁移就会创建名为“XXX”的表,以及相应的字段。例如:
$ rails generate migration CreateProducts name:string part_number:string
生成的迁移如下:
class CreateProducts < ActiveRecord::Migration def change create_table :products do |t| t.string :name t.string :part_number end end end
生成器生成的只是一些基础代码,你可以根据需要修改 db/migrate/YYYYMMDDHHMMSS_add_details_to_products.rb
文件,增删代码。
在生成器中还可把字段类型设为 references
(还可使用 belongs_to
)。例如:
$ rails generate migration AddUserRefToProducts user:references
生成的迁移如下:
class AddUserRefToProducts < ActiveRecord::Migration def change add_reference :products, :user, index: true end end
这个迁移会创建 user_id
字段,并建立索引。
如果迁移名中包含 JoinTable
,生成器还会创建联合数据表:
$ rails g migration CreateJoinTableCustomerProduct customer product
生成的迁移如下:
class CreateJoinTableCustomerProduct < ActiveRecord::Migration def change create_join_table :customers, :products do |t| # t.index [:customer_id, :product_id] # t.index [:product_id, :customer_id] end end end
相关推荐
Ruby Ferry 提供了一套完善的命令来创建、上载、下传、应用和回滚迁移,使得开发者可以方便地对数据库进行操作。 此外,Ruby Ferry 还强调了数据的可视化。这通常意味着它能以图形化的方式展示数据库的结构,帮助...
在Ruby on Rails中,模式迁移通常通过创建`.rb`文件并在其中编写特定的迁移命令来完成。Ruby-Shift扩展了这一概念,为非Rails项目提供了类似的迁移功能,使那些不依赖于完整Rails环境的MySQL数据库应用也能受益。 ...
然后,运行`rake db:migrate`命令,它会执行这个迁移,从而在数据库中创建对应的表。 最后一步,"迁移数据库到mysql里面",实际上指的是运行数据库迁移,将数据库结构的变化应用到实际数据库中。在Ruby on Rails中...
通过这些资源,初学者可以在短时间内建立起对Ruby语言和Rails框架的基本理解,并逐步进阶到更复杂的开发任务。记得理论学习与实践相结合,不断编写代码和调试,是提升技能的最好方式。祝你在Ruby的世界里探索愉快!
Ruby-TensorStream的API设计尽力模仿TensorFlow,使用户可以轻松地从TensorFlow迁移过来。例如,它提供了类似的张量(Tensor)操作,包括创建、初始化、加法、乘法等。此外,它还支持构建计算图、会话管理和数据流...
- 方法:Ruby中的方法可以定义在类、模块或对象上,支持块(block)和Proc对象。 - 控制结构:包括条件语句(如if、unless)、循环(如for、while、until、each)和流程控制(break、next、redo、retry)。 2. **...
在Ruby on Rails框架中,数据库迁移是开发过程中不可或缺的一部分,它允许开发者在不丢失数据的情况下对数据库结构进行修改。以下是一些在进行Ruby on Rails迁移时需要注意的关键点,以确保过程顺利且不会对现有数据...
这份文档可能包含创建控制器、模型、视图的步骤,以及路由、数据库迁移、ActiveRecord的使用等内容。 在学习Ruby的过程中,了解其面向对象特性至关重要。Ruby的所有事物都是对象,包括基本数据类型,这使得编程更加...
6. 容器迁移:虽然Ruby-LXC并不直接支持容器的迁移,但它可以与其他工具结合,如使用`lxd`或`criu`来帮助完成容器在不同主机间的迁移。 7. 安全性:Ruby-LXC遵循liblxc的安全模型,确保容器之间的隔离性和安全性。...
Rails提供了一系列的命令行工具,如`generate`命令,可以快速创建模型、控制器、迁移等。例如,`rails generate model Book title:string author:string`将创建一个`Book`模型,包含`title`和`author`属性。 6. **...
以上就是建立并使用Ruby on Rails开发环境的基本步骤。Ruby on Rails以其简洁的代码风格和高效的开发流程,吸引了大量开发者。通过RubyMine这样的IDE,开发者可以更高效地管理项目,提升开发效率。不断学习和实践,...
本项目“Ruby-在一个简单的UI中管理您的RubyOnRails模型关系和迁移”旨在提供一个直观的用户界面,以便开发者能够更加方便地管理和操作Rails应用中的数据模型、关系和数据库迁移。 在Rails中,数据模型(Model)...
- 通过创建迁移文件来改变数据库结构,`rails generate migration`命令用于生成迁移,然后在迁移文件中添加数据库操作,最后运行`rake db:migrate`执行迁移。 10. **Scaffolding**: - Rails的scaffolding功能...
- **Rails CLI**:Rails提供了命令行工具,方便进行项目创建、生成器使用以及数据库迁移等操作。 #### Sinatra Sinatra是一种轻量级的Web应用框架,相较于Rails而言更为简单灵活。Sinatra适合构建小型Web应用或API...
Ruby库如`roo`可以方便地读取Excel文件,而`Nokogiri`则可以用来创建和操作XML文档。 首先,我们需要了解`roo`库。`roo`是Ruby中用于读取不同类型的电子表格文件(如Excel、OpenOffice、Google Sheets)的库。安装`...
1.rails new blog --skip-bundle //创建项目 2.cd blog //进入项目根目录 3.subl . //打开项目开发环境 4.Bundle install //安装gem包环境 5.rails generate model post title:string content:text author:string ...
Chewy的主要目标是简化Elasticsearch在Ruby应用中的集成,它通过定义索引模式(Index Patterns)和类型(Types)提供了面向对象的API。这使得开发者可以更加直观地处理索引的创建、更新和查询,而无需深入理解复杂的...
Ruby on Rails(Rails)是由David Heinemeier Hansson创建的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,极大地简化了Web应用的构建过程。通过Rails,开发者可以快速搭建功能丰富的网站,同时...
- `generate model`:创建数据库模型,自动生成迁移文件。 4. **数据库和ActiveRecord**: - Migrations:用于数据库结构变更的Ruby脚本,通过`rake db:migrate`执行。 - Associations:定义模型之间的关系,如...
- **Ruby语言**:深入理解Ruby语言的特性及其在Ruby on Rails中的应用。 - **测试**:介绍如何为Ruby on Rails项目编写单元测试和集成测试。 - **AJAX**:学习如何在Ruby on Rails应用中集成异步JavaScript和XML技术...