Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails迁移到drop数据库(仅当它尚未被删除时)_Ruby On Rails_Ruby_Rails Migrations - Fatal编程技术网

Ruby on rails Rails迁移到drop数据库(仅当它尚未被删除时)

Ruby on rails Rails迁移到drop数据库(仅当它尚未被删除时),ruby-on-rails,ruby,rails-migrations,Ruby On Rails,Ruby,Rails Migrations,我正在尝试重新调整以前用于其他用途的表的用途。因此,我正在创建一个迁移,以删除表并从新列开始。但是,我遇到了一个问题,如果我回滚迁移并再次运行它,就会出现错误,因为表已经被删除。我怎样才能避开这件事 class CreateNewTeams < ActiveRecord::Migration def self.up drop_table :teams create_table :teams do |f| # ... end end def

我正在尝试重新调整以前用于其他用途的表的用途。因此,我正在创建一个迁移,以删除表并从新列开始。但是,我遇到了一个问题,如果我回滚迁移并再次运行它,就会出现错误,因为表已经被删除。我怎样才能避开这件事

class CreateNewTeams < ActiveRecord::Migration
  def self.up
    drop_table :teams
    create_table :teams do |f|
      # ...
    end
  end

  def self.down
    drop_table :teams
  end
end
class CreateNewTeams
您的down应该使数据库保持在迁移运行前的状态。所以在你的情况下

class CreateNewTeams < ActiveRecord::Migration
  def self.up
    drop_table :teams
    create_table :teams do |f|
      # new purpose
    end
  end

  def self.down
    drop_table :teams
    create_table :teams do |f|
      # old purpose
    end
  end
end
class CreateNewTeams

如果您需要更改的只是重命名一些列,那么在不删除表的情况下进行更改。如果您在一个活跃且广泛使用的应用程序上执行此操作,部署此更改将导致停机。请记住这一点

强制
选项是为在创建表(如果存在)之前删除表而构建的。看

class CreateNewTeamstrue do | f|
#新栏目
结束
结束
def自动关闭
创建|表:团队,:force=>true do | f|
#老柱
结束
结束
结束

啊,说得好,我不该在回滚时把表掉了。
class CreateNewTeams < ActiveRecord::Migration
  def self.up
    create_table :teams, :force => true do |f|
      # new columns
    end
  end

  def self.down
    create_table :teams, :force => true do |f|
      # old columns
    end 
  end
end