【问题标题】:Rails 5: Why dropping a specific table isnt as simple as typing a command like drop_table(users):?Rails 5:为什么删除特定表不像键入命令行 drop table(users) 那样简单:?
【发布时间】:2017-04-05 22:22:42
【问题描述】:

我想摆脱一些开发实验,所以我开始销毁我的模型和控制器,然后我开始工作的 db 部分。查看以前的答案,如Rails DB Migration - How To Drop a Table? 和 Rails 5 的 API 指南,我意识到删除特定表并不像“rails destroy controller users”那么简单......但为什么会这样?

以前的 stackoverflow 帖子建议运行 bundle exec...之前 去追踪控制器和模型,但我现在已经失去了那艘船。

简而言之:有人可以用一些技术见解描述我现在应该详细删除剩余表的步骤并向我解释为什么在以下位置删除特定表并不那么简单这点?

我们将不胜感激提供回滚实验的最佳实践指南。

【问题讨论】:

标签: ruby-on-rails database-schema ruby-on-rails-5


【解决方案1】:

@deepak 处理了“详细”部分。我会回答“为什么”

并向我解释为什么此时删除特定表没有那么简单?

简单的答案:团队合作、自动化和文档。您的所有数据库更改都必须经过迁移。这样一来,当您的同事收到您的更改时,他们就不必追捕您并询问现在需要创建哪些具有什么结构的特定表。他们只需要运行rake db:migrate 即可。

如果您尚未提交更改(该表仅在本地为您存在),那么回滚迁移并删除迁移文件是安全的。否则,如果该表存在于其他环境中,则必须发布反向迁移。

【讨论】:

  • 所以基本上你所说的是,目前的结构不是必要的问题,而是选择的问题.. 有趣。所以迁移帮助每个人保持在同一页面上?你如何检查这个记录?通过我怀疑的日志..
  • @alexandros84:你如何检查什么?如果您的数据库不是最新的,Rails 将拒绝启动。它会提示您运行迁移。
  • 你提到了团队合作。我现在一个人,但我想大多数现实生活中的应用程序背后都有很多人在工作。迁移就像一个里程碑,让每个人都在同一个页面上?
  • 是的,类似的。
【解决方案2】:

您可以按照与创建模型相反的顺序执行该步骤

例如

rails g model User name:string email:string:index

然后你运行迁移

rake db:migrate

现在,如果你需要销毁模型

首先,回滚迁移

rake db:rollback

然后使用销毁它

rails d model User name:string email:string:index

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多