【发布时间】:2014-11-26 20:10:45
【问题描述】:
我有一个要运行的迁移,但在它运行之前我想验证某些条件(即迁移调用模型上的实例方法,并且我想确保该方法在运行迁移之前存在)。
考虑到这一点,我找不到任何说明在验证未通过时如何停止迁移的文档。似乎最有可能引发异常是执行此操作的明智方法。我发现ActiveRecord::Rollback 看起来不错,因为它显式回滚事务,但它也具有事务回滚后不重新引发的特性,因此我可能不会看到我附加的任何消息例外。
我一直在搜索“rails 取消迁移”之类的内容,但所有结果似乎都涉及无意中取消的迁移。我想在某些情况下故意(并且优雅地)失败。
【问题讨论】:
-
有趣的问题。 FWIW我也想过手动引发异常。不能对它是否是最好的方法做出任何声明,但它肯定会奏效。副作用当然是迁移不会被认为是成功的,下次你
rake db:migrate时会尝试再次运行(我相信这是你的意图)。
标签: ruby-on-rails rails-activerecord rails-migrations