我希望在运行时使用ActiveRecord删除并设置我的rails db。最好的方法是什么?我假设我需要删除现有连接,然后重新连接?
有没有人有这方面的经验,你能分享一下正确的步骤吗?
答案 0 :(得分:0)
您可以非常轻松地使用这些命令rake db:drop
,rake db:create
,rake db:migrate
,但这是您真正想要的吗?有关此命令的更多信息,请查看此处 - > Difference between rake db:migrate db:reset and db:schema:load
答案 1 :(得分:0)
在运行时执行典型的drop,创建,迁移时,我没有太多运气,因此我使用了以下方法(由@David Aldridge建议):
connection ||= ActiveRecord::Base.connection
connection.tables.each do |t|
connection.execute("TRUNCATE \"#{t}\" RESTART IDENTITY CASCADE") unless t == 'schema_migrations'
end
我应该首先提到我使用的是postgres。
我之前遇到的问题是我被db中的索引约束阻塞了,但使用CASCADE
参数解决了这个问题。
CASCADE
允许关联的表也被截断 - 基本上绕过约束
RESTART IDENTITY
允许将表增量重置为零。