假设我创建了一个rake任务来向表中添加列。运行rake任务后,我可以删除rake文件,同时保留对数据库的更改吗?
我知道迁移可以完成同样类型的任务,但是如果我想减少运行这种简单数据库更改的迁移,那么rake任务是否可以接受?
道歉,如果这是一个菜鸟问题,我做了一些搜索,找不到合适的答案。
答案 0 :(得分:3)
您应该明确使用迁移。如果您创建rake任务然后将其删除,则更改将仅应用于此数据库实例(可以是开发数据库)。
将应用程序部署到生产环境,甚至运行规范时,必须再次手动添加新列以更新数据库架构。
此外,在使用迁移时,您将拥有数据库演变模式的历史记录。
答案 1 :(得分:1)
向表中添加/删除列的最简单方法是迁移。迁移的一大优势是您可以将数据库设置为应用程序的确切进度。
如果您使用额外的rake任务执行此操作 - 并且没有理由这样做 - 我保证如果您需要从头开始设置数据库,则会在几天/几周内忘记运行这些rake任务。特别是如果在添加cols后删除了rake任务。
HTH