首先,确保你已经配置好了database.yml,假设我们要创建一个名为person的model,现在我们可以通过db:migrate任务来避免直接使用SQL来操作数据库:
$ script/generate model person name:string age:int
这条命令将在你的db/migrate目录下创建001_create_people.rb文件,我们可以通过它来创建people(people是person的复数)表:
$ rake db:migrate
== CreatePeople: migrating ===================
-- create_table(:people)
-> 0.1900s
== CreatePeople: migrated (0.1900s) ==========
现在,你会发现你的数据库中已经多了一个people表,它包含3个字段:id,name,age,如果你不需要那个自动创建的id字段,那么你可以修改001_create_people.rb,在create_table :people后面加上:id => false即可。
如果随后你发现你需要再增加一个学位字段,也很简单:
$ script/generate migration add_degree_to_people
== AddDegreeToPeople: migrating ============
-- add_column(:people, :degree, :string)
-> 0.3400s
== AddDegreeToPeople: migrated (0.4100s) ===
这将在db/migrate目录下创建002_add_degree_to_people.rb文件,对它进行编辑:
class AddDegreeToPeople < ActiveRecord::Migration
def self.up
add_column :people, :degree, :string
end
def self.down
remove_column :people, :degree
end
end
然后再次执行rake db:migrate,现在你会发现people表已经多了一个degree字段。
事实上除了add_column,我们还可以对数据库进行更多的操作:
- create_table(name, options),创建表
- drop_table(name),删除表
- rename_table(old_name, new_name),重命名表
- add_column(table_name, column_name, type, options),添加列
- rename_column(table_name, column_name, new_column_name),重命名列
- change_column(table_name, column_name, type, options),改变列属性
- remove_column(table_name, column_name),删除列
- add_index(table_name, column_name, index_type),创建索引
- remove_index(table_name, column_name),删除索引
唯一需要注意的就是:必须在down方法中撤销up方法对数据库所作的一切更改,以保证我们所有的迁移都是可逆的。
比如,假设我们现在想从people中去除degree字段,那我们只需要执行下面这条语句就可以了:
$ rake db:migrate version=1
如果我们连people表也不需要了,那就执行:
$ rake db:migrate version=0
另外,除了db:migrate,还有两个比较有用的操作数据库的rake任务:
- rake db:schema:dump,这将在db目录下创建一个schema文件,你可以通过复制它的内容来为数据库中现有的表创建migration文件(如果你的应用不是一开始就使用db:migrate的话)
- rake db:structure:dump,这将在db目录下创建一个structure文件,它包含创建当前数据库结构所需的SQL语句。
分享到:
相关推荐
阿里云批量上传代码制品库插件:migrate-local-repo-tool 阿里云批量上传代码制品库插件:migrate-local-repo-tool 阿里云批量上传代码制品库插件:migrate-local-repo-tool
Capistrano :: Rails :: Db Capistrano v3的Rails迁移任务: 在终端中运行cap -T deploy:db以获取迁移任务的完整列表: ...cap deploy:db:migrate # Run rake db:migrate Migrate the database (opti
db-migrate-plugin-es6cjs 一个允许CJS迁移的插件。 安装 npm安装db-migrate-plugin-es6cjs 实施细节 该插件与db-migrate本身的功能挂钩。 在这种情况下,它将挂接到migrator:migration:hook:require。 它允许...
$ rails db:migrate:down VERSION= $ rails db:migrate:up VERSION= $ rails db:rollback $ rails db:rollback_to VERSION= $ rails db:migrate:redo $ rails db:migrate:reset $ rails db:migrate:status $ rails ...
grunt db:migrate:create --name = create_guests_schema grunt db:migrate:up grunt db:migrate:down --count = 150 您需要设置config/migrations.js来命名用于运行迁移的连接。 // config/migrations.js...
每个项目的基于角色的访问 测试 概括 在 travis-ci.org(主分支)上 测试政策 一切都应该被测试覆盖 ...rake db:drop db:create db:migrate db:test:load db:test:prepare redmine:plugins:migrate redmine:load
现在可以通过以下方式使用DB-Migrate: $ db-migrate 作为本地模块 是否要使用db-migrate作为本地模块? $ npm install db-migrate 现在可以通过以下方式使用DB-Migrate: $ node node_modules/db-migrate/bin/db...
migrate -path ./db/migrations create add_field_to_table migrate -url postgres://user@host:port/database -path ./db/migrations -timeout 10 up migrate -url postgres://user@host:port/database -path ./db/...
Instantboard API服务器入门 # initialize$ npm run db:create$ npm run db:migrate$ npm run dev测试 # initialize$ npm run db:create$ NODE_ENV=test npm run db:migrate# run test$ npm test端到端测试 # ...
《jQuery Migrate 3.4 版本详解》 jQuery Migrate 是一个插件,它的主要目的是帮助开发者平滑地过渡到较新版本的 jQuery,解决老版本代码在新版本中可能遇到的兼容性问题。在jQuery Migrate 3.4.0版本中,我们看到...
克隆/下载仓库确保Postgres数据库正在运行运行bundle install从Gemfile安装所有gem 运行rails db:drop然后运行rails db:drop rails db:create然后rails db:migrate创建数据库表要启动服务器,请运行命令rails s 在...
ruby sample: @echo off cd D:\proj\demo ...rem load test data (it depends on the db:environment and db:migrate tasks) call rake db:load_test_data call ruby script/server webrick @echo on
自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。...rails db:migrate:reset 轨道测试 Rails G迁移add_remember_digest_to_users记住_digest:字符串 Heroku日志 Heroku打开 Heroku
没有Rails的ActiveRecord 只是在没有Rails的情况下使用ActiveRecord迁移的简单示例您可以执行的任务: rake db:create rake db:migrate rake db:dropRails 5+的注意事项请注意,即使使用Rails 5,您也需要rake db:...
山脊极轨 Ridgepole-rails提供了两个Rake任务: ridgepole:export和ridgepole:apply它们分别包装的ridgepole --export和ridgepole --apply 。 用法 要将数据库的当前架构导出到Schemafile ... db:migrate:status , db
数据迁移 将数据迁移与模式迁移一起运行。 数据迁移存储在db/data 。 它们的行为类似于架构迁移,只是它们应保留用于数据... 当然,您要测试迁移,因此可以选择db:migrate:with_data或data:migrate来捕获数据更改。
运行命令“ npm run db:migrate” 运行命令“ npm run db:seed” 您可以运行“ npm run start”来捆绑后端并运行服务器 您可以在此地址访问 我建议使用邮差工具检查API如何处理JWT。 地址可用: GET (查询=...
bundle exec rake db:create db:migrate RAILS_ENV=test bundle exec rake db:create db:migrate bundle exec rspec # All tests should be passed. # Play with local development server. bundle exec rails ...
NODE_ENV=production npm run db:migrate NODE_ENV=production npm run build NODE_ENV=production node index.js 发展 npm run db:create npm run db:migrate npm run dev 脚本 NODE_ENV=(development|test|...
相当于rake db:drop db:setup rake db:migrate 为所有尚未运行的迁移运行更改方法 更改现有表架构在 db/migrate 下生成新的迁移文件rails g migration ChangeTableOnSomeAttributes 修改 db/mig