【问题标题】:Rails - Table still in schema.rb after rails destroy scaffold and drop_table migrationRails - 在 rails 破坏脚手架和 drop_table 迁移后,表仍在 schema.rb 中
【发布时间】:2018-02-12 22:25:49
【问题描述】:

我正在尝试删除一个旧模型等,它是通过过去几次迁移创建的。所以我按照this 线程中的建议运行了 drop_table 迁移和rails d scaffold Modelname 命令(也许我先这样做了,现在不确定了)。

据我所知,删除了表和脚手架创建的所有其他文件,但我的问题是 schema.rb 仍然包含表!我读过here,我可能可以通过运行rails db:drop db:create db:migrate 来解决这个问题,但我想知道是否有办法在不完全重置数据库的情况下修复schema.rb?(不幸的是,我当我向我的应用程序添加部件而不是编写适当的种子文件时,我开始通过控制台填充我的数据库。)

【问题讨论】:

    标签: ruby-on-rails rails-migrations scaffolding ruby-on-rails-5


    【解决方案1】:

    您可以从 rails 控制台删除表格,例如模型是用户,那么您的表格将是用户

    $rails 控制台

    然后输入:

    ActiveRecord::Migration.drop_table(:users)
    

    用户问题的补充回答:

    要更新 schema.rb 中的表架构,您可以使用

    $ rake db:schema:dump

    【讨论】:

    • 我认为该表不存在了。我试图在 Rails 控制台中查找它,它给了我一个错误,说没有带有我以前模型名称的表。 (这是有道理的,因为 drop_table 迁移工作没有引发错误。)我的问题只是 schema.rb 没有更新。
    • 从 Rails 控制台你可以尝试 rake db:schema:dump 将表模式转储到 schema.rb
    • 是的,为我解决了这个问题!谢谢@widjajayd!如果您将其编辑为原始答案,我会接受它:)
    猜你喜欢
    • 2014-11-28
    • 2016-08-07
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 2014-08-08
    • 2017-05-19
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多