gpt4 book ai didi

ruby-on-rails - Rails迁移不适用于清空功能

转载 作者:行者123 更新时间:2023-12-04 03:45:39 24 4
gpt4 key购买 nike

我生成了带有空下移功能的rails 3.2迁移,因为该迁移是不可逆的(并且我不想抛出异常)。我成功运行了迁移,但是没有任何效果。当我回滚并再次运行db:migrate时,效果确实适用。

我通过用什么都不做的代码填充空的down函数来轻松解决此问题,但这仍然很丑陋。

有谁知道为什么会这样吗?这是Rails的错误吗?

最佳答案

抛出异常是为了防止破坏您的数据库,如果该数据库不可逆,那可能是正确的选择。
您的#down可能如下所示:

  def down
raise ActiveRecord::IrreversibleMigration, "Explain why its irreversable!"
end


这显然会通知不可逆转的迁移,并解释其背后的原因:

编辑:我无法确认Rails 3.2.3的此行为。我创建了几个不带 #down的不同迁移,并且没有引发exceptino。也许这是您的代码中的某些内容,您没有显示。

编辑2:回顾一下,当您使用上/下方法时,您有责任提出 ActiveRecord::IrreversibleMigration。在其他情况下,什么也不会发生(AR中定义的 #down仅返回nil)。当您使用 #change时,行为是不同的。在某些情况下,可以通过以下定义的 #inverse引发上述异常: https://github.com/rails/rails/blob/565bfb9cd49285ebaa170141b4996c22ba81de43/activerecord/lib/active_record/migration/command_recorder.rb#L39这是预期的行为。

关于ruby-on-rails - Rails迁移不适用于清空功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10072523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com