【问题标题】:Rails : Create a drop table cascade migrationRails:创建删除表级联迁移
【发布时间】:2013-06-04 22:38:45
【问题描述】:

如何在 Rails 3.2 迁移中强制使用 DROP TABLE CASCADE?

是否有传递给 drop_table("table_name") 的选项?

【问题讨论】:

    标签: ruby-on-rails postgresql


    【解决方案1】:

    在 Rails 4 中,您可以执行以下操作:

    drop_table :accounts, force: :cascade
    

    【讨论】:

      【解决方案2】:

      您始终可以在迁移中运行原始 SQL。

      MYSQL:

      execute "DROP TABLE #{:table_name} CASCADE CONSTRAINTS PURGE"
      

      PostgreSQL:

      execute "DROP TABLE #{:table_name} CASCADE"
      

      你可以查看内置方法drop_tablehere的文档。

      【讨论】:

      • 这适用于 MySQL,但 PostgreSQL 的语法略有不同:执行 "DROP TABLE #{:table_name} CASCADE"
      【解决方案3】:

      在您的初始化程序目录中放置一个名为 postgres.rb 的文件,然后这样做。无论如何,这适用于 rails 4.1。

      module ActiveRecord
          module ConnectionAdapters # :nodoc:
              module SchemaStatements
                  def drop_table(table_name, options = {})
                      execute "DROP TABLE  #{quote_table_name(table_name)} CASCADE"
                  end
              end
          end
      end
      

      【讨论】:

        猜你喜欢
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        • 2015-10-07
        相关资源
        最近更新 更多