1、在 rails guides 的 Active Record 章节中写道: rails db:migrate 任务,用于调用所有未运行的迁移中的 chagne 或 up 方法, 那么在新的迁移中写的 down 方法就不会运行吗? 2、而在介绍 up 和 down 时写道: 如果调用 up 方法之后紧接着调用 down 方法,数据库模式不会发生任何改变。 这句话不是很上面矛盾了吗?
rails db:rollback 会调用 down,或者 change 中的反义操作(如果有对应的反义操作)
若 up 中 add_column,down 中 remove_column,那么调完 up 再调 down(migrate 然后 rollback),结果就相当于没加过 column
感觉你没跟着做一遍
第二句的意思是相当于告诉你 down 的作用是,其执行后可以抵消掉与它配对的 up 产生的所有效果。并不是说 down 在 up 执行之后就马上执行
你可以这么理解,change 这个方法集成了 up 和 down 这两个方法,而执行 rails db:migrate 时,只执行 up 或者 change 中的 up 部分。
待需要执行 rails db:rollback 时则才会触发 down 或 change 中的 down 部分。
确实没有跟着做,谢谢指正!
谢谢!