Rails 5:为什么删除特定的 table 不像输入 drop_table(users): 这样的命令那么简单?
Rails 5: Why dropping a specific table isnt as simple as typing a command like drop_table(users):?
我想摆脱一些开发实验,所以我开始破坏我的模型和控制器,然后我去了工作的数据库部分。查看以前的答案,例如 Rails DB Migration - How To Drop a Table? 和 API Rails 5 的指南,我意识到删除特定的 table 并不像 "rails destroy controller users" 那样简单。 .但这是为什么呢?
之前的 Whosebug post 建议 运行 bundle exec... before 追求控制器和模型,但我现在已经失去了那艘船。
简而言之:有人可以用一些技术洞察力描述我应该采取的步骤来删除残余 table 现在详细 并向我解释为什么此时删除特定 table 不是那么简单吗?
如能提供回滚实验的最佳实践指南,我们将不胜感激。
您可以按照与创建模型相反的顺序进行操作
例如
rails g model User name:string email:string:index
然后你 运行 迁移
rake db:migrate
现在,如果您需要销毁模型
首先,回滚迁移
rake db:rollback
然后使用
销毁它
rails d model User name:string email:string:index
@deepak 处理了 "detailed" 部分。我会回答 "why"
AND explain to me why is not as simple to delete a specific table at this point?
简单的回答:团队合作、自动化和文档。您的所有数据库更改都必须经过迁移。这样一来,当您的同事收到您的更改时,他们就不必追捕您并询问现在需要创建具有何种结构的具体 table 。他们只需要 运行 rake db:migrate
就是这样。
如果您还没有提交更改(table 仅在本地存在),那么回滚迁移并删除迁移文件是安全的。否则,如果table存在于其他环境中,则必须发布反向迁移。
我想摆脱一些开发实验,所以我开始破坏我的模型和控制器,然后我去了工作的数据库部分。查看以前的答案,例如 Rails DB Migration - How To Drop a Table? 和 API Rails 5 的指南,我意识到删除特定的 table 并不像 "rails destroy controller users" 那样简单。 .但这是为什么呢?
之前的 Whosebug post 建议 运行 bundle exec... before 追求控制器和模型,但我现在已经失去了那艘船。
简而言之:有人可以用一些技术洞察力描述我应该采取的步骤来删除残余 table 现在详细 并向我解释为什么此时删除特定 table 不是那么简单吗?
如能提供回滚实验的最佳实践指南,我们将不胜感激。
您可以按照与创建模型相反的顺序进行操作
例如
rails g model User name:string email:string:index
然后你 运行 迁移
rake db:migrate
现在,如果您需要销毁模型
首先,回滚迁移
rake db:rollback
然后使用
销毁它rails d model User name:string email:string:index
@deepak 处理了 "detailed" 部分。我会回答 "why"
AND explain to me why is not as simple to delete a specific table at this point?
简单的回答:团队合作、自动化和文档。您的所有数据库更改都必须经过迁移。这样一来,当您的同事收到您的更改时,他们就不必追捕您并询问现在需要创建具有何种结构的具体 table 。他们只需要 运行 rake db:migrate
就是这样。
如果您还没有提交更改(table 仅在本地存在),那么回滚迁移并删除迁移文件是安全的。否则,如果table存在于其他环境中,则必须发布反向迁移。