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