Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails:在没有给定版本的情况下,有没有办法在最后一次迁移之前运行三次迁移_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails rails:在没有给定版本的情况下,有没有办法在最后一次迁移之前运行三次迁移

Ruby on rails rails:在没有给定版本的情况下,有没有办法在最后一次迁移之前运行三次迁移,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有不同的迁移文件 20120205111326\u更改用户\u登录\u限制.rb 20120223110929\u更改\u附件\u容器\u默认值。rb 20120223110300\u更改\u本地\u容器\u默认值。rb 20120223110301\u变更位置\u跟踪.rb 我想在最后一次迁移之前运行20120205111326,20120223110929,20120223110300的迁移,但条件是它不应该指向其迁移版本号 有什么办法吗请给我提个建议 提前感谢您有一种方法,通过rails

我有不同的迁移文件

20120205111326\u更改用户\u登录\u限制.rb

20120223110929\u更改\u附件\u容器\u默认值。rb

20120223110300\u更改\u本地\u容器\u默认值。rb
20120223110301\u变更位置\u跟踪.rb

我想在最后一次迁移之前运行
20120205111326
20120223110929
20120223110300
的迁移,但条件是它不应该指向其迁移版本号

有什么办法吗请给我提个建议


提前感谢您

有一种方法,通过rails控制台运行迁移

require "db/migrate/20120205111326_change_users_login_limit.rb"
ChangeUsersLoginLimit.change # or 'up' or 'down' whatever method of that migration you want to run.
并对所有迁移执行相同的操作(不要忘记按顺序执行)

编辑:


Rails实际上没有提供一种跳过某些迁移的方式来运行迁移。或者通过改变顺序来运行它们但是迁移文件实际上是一个包含单个类的ruby程序。因此,您可以始终创建一个rake任务,并要求迁移到rake任务中,然后按自定义逻辑顺序运行它们。所有迁移之后都是带有方法的类。

AFAIK,不是。从某种意义上讲,它不是Rails中的一项功能。但是,您可以运行特定的迁移,然后在迁移文件中注释掉代码并回滚…听起来很傻,我知道,但它应该按照您想要的方式工作。首先,谢谢@j03w…是的,这确实有问题,因为我的文件位于已部署的服务器中,并且没有打开文件和注释行的权限…我很麻烦,您总是可以回退到纯SQL解决方案,如编写一些SQL语句并在数据库上运行它。您甚至可以在某个地方运行迁移,并从
structure.sql
复制create table语句,如果您不确定是否可以复制rails将使用的命令HMMM。。。。这是最后一个解决方案…顺便说一句,谢谢,我不想在rails控制台中使用………这是一种通过分配文件名进行的硬编码。我们可以通过创建一个任务来执行
rake db:migrate_last3
,它将是通用的吗