migrate 最大的好处就是用统一的规范,低成本(对开发人员来说,低成本就是便利)地让各个环境(生产、测试、开发、个人)的数据库达到一致。 没有它之前,每个环境的人都得去检查是否有人更新数据库了,如果有,就复制粘贴执行,再打上自己的标志,这么多步骤难道不复杂吗?比起记一个命令真的是复杂麻烦多了。 至于楼主觉得 dsl 有一定的学习曲线,增加学 rails 的难度,那可以直接把原生的 sql 复制到 migration 脚本中,使用 migrate 执行即可,这样即可以不用让人去学习 dsl,又可以用上 migrate 的好处。 不用 dsl,我认为在多数项目中都是可行的,毕竟有几个项目会在中途更换数据库呢?