Rails学习笔记(2) ————migration(数据库迁移)

来源:互联网 发布:黑客网络 生涯起点 编辑:程序博客网 时间:2024/06/06 00:44

使用rails的migration之前先配置以下几步

一:

1.在config/database.yml配置mysql数据库

#这里的意思是这是开发模式下的数据库配置,可以选择的是:development, test, productiondevelopment:  # 表示数据库的驱动  adapter: mysql2  # 数据库的名字  database: db_name  # 数据库的用户名  username: root  # 表示密码  password: admin  # 数据库的ip地址  host: localhost

2.修改Gemfile

这里修改之前先把默认的sqllite删掉,不加'0.3.17'会默认生成最高版本,这里不需要,按下面的配置即可。

gem 'mysql2', '0.3.17'

3.执行命令$ bundle install

这里相当于java的maven,可以为项目添加所需的gem


4.创建数据库

$ bundle exec rake db:create

这是,你会发现数据库已经创建好了

----------------------------------------------------------------------------------------------   (人工分割线)

二:

5.执行命令$ rails generate migration CreateTableName来创建migrate文件

例如:$ rails g migration CreateStudents(migration可以省略成g)

我们会发现在项目的db/migrate会多出一个文件,打开,编辑。

#db/migrate/20161202100861_create_students.rbclass CreateStudents < ActiveRecord::Migration  def up    create_table :students do |t|      t.string :name      t.timestamps    end  end    def down    drop_table :students  endend

解释:

up的意思是从过去,往未来的时间方向上发展
down的意思是在时间上倒退
因为它可以移过来,再移回去.在不断的up/down中,数据库实现了迁移,这就是这个名字的由来,每个文件都有时间戳。


6.执行命令$ rake db:migrate

这样查看数据库就会发现学生表已经创建成功了,而且里面会有name、create_up、update_up这三个列


7.想要回滚执行命令$ rake db:rollback

一般在商业项目中很少用rollback,比如你修改表结构,一般会执行$ rake dbLmigrate


8.up down和change的区别

如果你用rails 4.x 来创建的话,得到的migration ,一般没有up, down 方法。因为,rails 非常智能,能自动的把up和down方法合并成change这个方法。

如果up方法中,是create_table, 那么,rails就会自动判断出,在down 方法中,就用drop_table。但是因为是项目中,我们一般也不会删除表,所以

用的多的是change,不过有时候rails无法进行判断,还是推荐用up down方法。


daydayup : )



1 0