Rails开发细节(五)Migrations 数据迁移

1.简介

在rails中用migration可以很方便的管理数据库的结构。可以创建数据库,创建表,删除表,添加字段,删除字段,整理数据。

migration就是一系列的class,这些类都继承了ActiveRecord::Migration类。

class CreateProducts < ActiveRecord::Migration
  def up
    create_table :products do |t|
      t.string :name
      t.column :description, :text
      t.timestamps
    end
  end 

  def down
    drop_table :products
  end
end

上面就是一个migration例子。up方法中的代码会在

rake db:migrate

之后执行。

down方法中的代码会在

rake db:rollback

之后执行。

t.timestamps会自动产生created_at和updated_at列。

还可以进行表结构修改。

class AddReceiveNewsletterToUsers < ActiveRecord::Migration
  def up
    change_table :users do |t|
      t.boolean :receive_newsletter, :default => false
    end
    User.update_all ["receive_newsletter = ?", true]
  end 

  def down
    remove_column :users, :receive_newsletter
  end
end

rails3.1之后产生了一个新的方法change,主要用来创建表和列,不用写一对up和down了,使用rake db:rollback回滚的时候数据库不用down方法也知道如何做了。

1.1.migration提供了很多的方法

add_column

add_index

change_column

change_table

create_table

drop_table

remove_column

remove_index

rename_column

如果想回滚migration对数据库造成的改变,可以使用rake db:rollback命令。

1.2.ActiveRecord支持的列类型

:binary

:boolean

:date

:datetime

:decimal

:float

:integer

:primary_key

:string

:text

:time

:timestamp

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, migrations
, 方法
, activerecord
, migration
, end
, down
, migrate
, migrate使用
migrate命令
rails 迁移、rails 数据库迁移、rails api开发、rails 微信开发、rails开发工具,以便于您获取更多的相关知识。

时间: 2024-11-02 05:49:14

Rails开发细节(五)Migrations 数据迁移的相关文章

Windows 8风格应用开发入门 五 ListView数据控件

什么是ListView数据控件? 1) ListView数据控件用来显示数据集合. 2) 继承自ItemsControl. 3) 大多数情况是纵向显示数据,显示的数据通常是排序过的. 4) 在切换到Snap View(贴靠视图)时,通常使用ListView显示数据集合. 开发入门 五 ListView数据控件-vba listview 控件"> 如何构建ListView数据控件? 首先我们需要了解一下ListView控件中一些重要属性和事件: 1) IsItemClickEnabled属性

Rails开发细节(九)Rails的测试

1.为什么写测试 rails使得我们很容易就可以写测试.在创建model和controller的时候,rails帮助我们创建了测试的骨架代码. 通过简单的运行你的测试代码,你可以确保你的代码在重构之后任然满足需求的功能. rails测试可以模拟浏览器请求,这样你就可以在不适用浏览器的情况下测试应用的响应情况. 2.测试简介 因为每一个rails应用都会和数据库有大量的交互,因此你的测试也需要一个数据库来进行交互.为了更好的写测试,你需要知道如何建立数据库,以及加载样本数据. 2.1.三个环境 每

Rails开发细节(八)Rails应用的安全

看过本文之后,你应该熟悉下面的内容: 所有显著的对策. rails中session的概念,其中存放的内容,常见的攻击手段. rails中大量的分配问题. 在提供管理接口的时候,你不得不关注的一些事情. 如何管理用户:登陆,退出,在各个层面的攻击方法. 常见的注入攻击方法. 1.简介 web框架帮助开发者构建web应用.它们中的一些还可以帮助你构建安全的web应用.事实上一个框架并不比两一个框架安全,如果你正确的使用,你可以用很多框架构建安全的web应用.rails包含一些聪明的帮助工具,例如防止

Rails开发细节(四)Transactions事务

事务在数据库应用开发中是相当重要的,尤其是在关系数据库中.典型的例子就是银行在转账,在两个账 户之间转账. account1.deposite(100) account2.withdraw(100) 在ActiveRecord中使用transaction方法执行一段block来实现事务.在 block的最后,会提交事务,更新数据库,如果在block中发生异常,数据库会回滚所有改变. Account.transaction do account1.deposite(100) account2.wi

Rails开发细节(二)CRUD

Create & Save 创建 & 保存 order = Order.new order.name = "virusswb" order.email = "asdf@exmaple.com" order.save 调用save方法之后就可以保存到数据库了. 还可以用block来创建并保存. Order.new do |order| order.name = "virusswb" order.email = "asdf@

Rails开发细节(一)

常用命令 rails new new_app cd new_app rake db:create rails server rails generate controller Blog action1 action2 rails generate scaffold Product title:string description:text rails generate model Comment commenter:string body:text post:references rake db

Rails开发细节(三)Participating in the Monitoring Process

Participating in the Monitoring Process 参与监控过程 ActiveRecord控制着model对象 的生命周期,它创建它们,在修改,保存和更新的时候监控它们,并且在删除的时候也进行监控.使用回调函 数,ActiveRecord允许我们的代码参与这个监控过程. ActiveRecord总共定义了20个回调函数.18个 成对的before和after,还有两个例外:after_find和after_initialize. 开发细节(三)Participatin

Rails开发细节(六)ActiveRecord Validationa and Callbacks验证和回调

1.对象生命周期 通常情况下,在rails应用中,对象会被创建,修改和删除.ActiveRecord针对这些对象提供了拦截,你可以控制你的应用和这些对象. 验证保证了存入数据库的数据都是有效的.回调和观察者允许你在对象状态发生变化的前后进行一些逻辑操作. 2.验证 2.1.为什么需要验证 验证保证了只有合法的数据才可以存入数据库.例如,你的应用需要确保每个用户都拥有合法的电子邮件地址和邮寄地址. 在存入数据库之前,有很多方法可以验证数据的合法性.包括数据库约束,客户端的验证,controller

Rails开发细节(七)ActiveRecord Associations关联

1.为什么需要关联 很多时候,比如说电子商务中的用户和订单,一个用户会有很多的订单,一个订单只属于一个用户,这就是一种关联. 在创建订单的时候需要用户主键作为外键,删除用户的的同时需要删除用户的订单. 在rails中可以向下面这样订单关联. class Customer < ActiveRecord::Base has_many :orders, :dependent => :destroy end class Order < ActiveRecord::Base belongs_to