rails 数据迁移 -migration

时间:2024-01-03 08:26:02

1、创建一个fruits 项目:

rails  new  fruits  -d  mysql  --skip-bundle

2、修改Gemfile:

source 'https://gems.ruby-china.org'

 gem 'rails', '~> 5.0.1'
gem 'mysql2', '>= 0.3.18', '< 0.5' #rails 默认不是mysql2 需要自己添加gem 或者在创建项目的时候 -d mysql
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5' group :development, :test do
gem 'byebug', platform: :mri
end group :development do
gem 'web-console', '>= 3.3.0'
gem 'listen', '~> 3.0.5'
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

3、配置 config / database.yml

development:           # 表示 这是开发模式下的数据库配置
adapter: mysql2 # 表示 数据库的驱动 例如:mysql2, sqlite, oracle, postgres
database: test_migration # 数据库名字
username: root # 连接数据库的用户名
password: 123456 # 密码
host: localhost # 数据库的ip 如果本机的数据库,就是localhost

  

4、创建数据库

bundle exec rake db:create

5、创建 users 表

bundle exec  rails  generate  migration  create_users

  

6、上面的命令创建好了 migration 也创建好了 users表 是放在是放在 db/migration

db / migrate / 20170228020223_create_users.rb  

class CreateUsers < ActiveRecord::Migration[5.0]
def up
create_table :users do |t| 创建users表
t.string :title users表中的数据类型 列名
t.string :name
t.string :age
t.string :maed
end
end def down
drop_table :users down方法跟up方法是相对的 up是创建表 down方法则是回滚没有创建user表的时候
end
end

文件保存好以后 执行 :

  bundle exec rake db:migrate  生成migrate 执行了这句才是创建user表  这是执行migrate中的up方法

  bundle exec rake db:rollback  这是执行 migrate 中的down方法  回滚上一步操作

  

  

7、 修改列名:

修改列名
bundle exec rails generate migration rename_age_to_my 这是吧age列名修改成my
bundle exec rails generate migation rename_ 原列名 _to_ 新的列名
执行上面的命令 会在db/migration下面创建/20170224083125_rename_age_to_my.rb 文件