是否有一种简单的方法来运行单个迁移?我不想迁移到某个版本,我只想运行一个特定的版本。
当前回答
这是再次运行迁移文件“20150927161307_create_users.rb”的步骤
运行控制台模式。(rails c) 将该文件中的类复制到控制台。 类CreateUsers < ActiveRecord::Migration def变化 Create_table:users do |t| t.string:名字 t.string:电子邮件 T.timestamps null: false结束 结束 结束 结束 创建CreateUsers类的实例:c1 = CreateUsers.new 执行该实例的方法更改:c1.change
其他回答
假设你可以运行最新版本的Rails:
rake db:migrate:up VERSION=20090408054532
其中version是迁移文件名中的时间戳。
编辑:在过去8年的某个时候(我不确定是哪个版本),Rails添加了检查,如果它已经运行,则阻止它运行。schema_migrations表中的一个条目表明了这一点。要重新运行它,只需执行rake db:migrate:redo VERSION=20090408054532即可。
这是再次运行迁移文件“20150927161307_create_users.rb”的步骤
运行控制台模式。(rails c) 将该文件中的类复制到控制台。 类CreateUsers < ActiveRecord::Migration def变化 Create_table:users do |t| t.string:名字 t.string:电子邮件 T.timestamps null: false结束 结束 结束 结束 创建CreateUsers类的实例:c1 = CreateUsers.new 执行该实例的方法更改:c1.change
如果您希望运行特定的迁移,请执行
$ rake db:migrate:up VERSION=20080906120000
如果您想多次运行迁移,那么就这样做
# use the STEP parameter if you need to go more than one version back
$ rake db:migrate:redo STEP=3
如果您希望多次运行一个迁移,那么就这样做
# this is super useful
$ rake db:migrate:redo VERSION=20080906120000
(您可以在迁移的文件名中找到版本号)
编辑:您也可以简单地重命名您的迁移文件,例如:
20151013131830 _my_migration。Rb -> 20151013131831_my_migration.rb
然后正常迁移,这将把迁移视为一个新的迁移(如果您想在您控制较少的远程环境(如登台)上迁移,则非常有用)。
编辑2:您还可以在数据库中删除迁移条目。例如:
rails_c> q = "delete from schema_migrations where version = '20151013131830'"
rails_c> ActiveRecord::Base.connection.execute(q)
Rake db:migrate会重新运行nuked迁移的up方法。
如果你想从控制台运行它,这是你要找的:
$ rails console
irb(main)> require "#{Rails.root.to_s}/db/migrate/XXXXX_my_migration.rb"
irb(main)> AddFoo.migrate(:up)
我尝试了其他答案,但要求没有Rails。根对我没用。
此外,.migrate(:up)部分强制迁移重新运行,无论它是否已经运行。这对于当你已经运行了一个迁移,但因为打乱了db而有点取消了它,并且想要一个快速的解决方案重新启动它的时候很有用。
方法一:
rake db:migrate:up VERSION=20080906120000
方法2:
在Rails控制台中 1. 在控制台复制粘贴迁移类(例如add_name_to_user.rb) 2. 然后在控制台输入以下命令
Sharding.run_on_all_shards{AddNameToUser.up}
结束了!!
推荐文章
- Rails。env vs RAILS_ENV
- 如何从Ruby数组中创建平均值?
- 如何在ruby中做一个安全的连接路径名?
- 实体框架回滚并移除不良迁移
- Ruby中没有增量操作符(++)?
- 如何得到一个特定的输出迭代哈希在Ruby?
- Ruby正则表达式中\A \z和^ $的区别
- 我能在视图中得到当前控制器的名称吗?
- __FILE__在Ruby中是什么意思?
- Paperclip::Errors::MissingRequiredValidatorError with Rails
- 如何表达一个NOT IN查询与ActiveRecord/Rails?
- Ruby on Rails form_for选择字段与类
- Ruby:如何将散列转换为HTTP参数?
- 在Rails 4中自动加载库文件
- 在ROR迁移期间,将列类型从Date更改为DateTime