【问题标题】:Schema file ruby on rails模式文件 ruby​​ on rails
【发布时间】:2014-09-05 08:28:43
【问题描述】:

我已经从控制台成功地从数据库中删除了我的表,使用

ActiveRecord::Migration.drop_table(:foo),

但由于某种原因,表数据仍显示在架构文件中。

我想要一种方法来做到这一点,而不必手动删除数据,(不会给它一个适当的轨道感觉。)

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

位于db/schema.rb 的架构文件很可能是在您上次运行rake db:migrate 时生成的。这是因为rake db:migrate 会通过db/migrate 文件夹中的所有迁移迁移您的数据库,然后它会调用db:schema:dump 任务,该任务会根据当前状态生成架构文件数据库。

对于您的情况,在 Rails 控制台中运行 ActiveRecord::Migration.drop_table(:foo) 后,数据库的当前状态(现在,不再具有表 foo)与生成的 schema.rb 文件不同步您上次迁移的时间。

此时您要做的是根据数据库的当前状态重新转储模式,您可以通过运行rake db:schema:dump 来完成此操作。这将获取您数据库的当前状态(没有表 foo)并生成您的 db/schema.rb 文件。

有关架构文件及其与迁移的关系的更多信息,我建议查看Rails Guide on Active Record Migrations: Schema Dumping and You

【讨论】:

  • 哇,Alvin,这是非常清晰的建议和解决方案,答案很好:-)
【解决方案2】:

虽然此处提供的答案可以正常工作,但我想要一些更“直截了当”的东西,我在这里找到了它:link 首先进入rails控制台:

$rails console

然后输入:

ActiveRecord::Migration.drop_table(:foo)

:foo 是表名。完成,为我工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多