我想在运行时使用ActiveRecord时放下并设置我的rails db。最好的方法是什么?我假设我需要放弃现有的连接,然后重新连接?
有没有人有这样做的经验,你能分享一下正确做这件事的步骤吗?
您可以很容易地使用这些命令rake db:drop
, rake db:create
, rake db:migrate
,但这是您真正想要的吗?rake db:migrate db:reset和db:schema:load的区别
我没有太多的运气在运行时做典型的删除,创建,迁移,所以我使用了以下方法(由@David Aldridge建议):
connection ||= ActiveRecord::Base.connection
connection.tables.each do |t|
connection.execute("TRUNCATE "#{t}" RESTART IDENTITY CASCADE") unless t == 'schema_migrations'
end
我应该首先提到我使用的是postgres。
我以前遇到的问题是,我被数据库中的索引约束阻塞了,但是使用CASCADE
参数解决了这个问题。
CASCADE
允许关联的表也被截断——本质上是绕过约束RESTART IDENTITY
允许将表增量重置为0