如何在运行时从Rails中删除,创建和迁移数据库?

时间:2016-11-06 20:16:22

标签: ruby-on-rails activerecord

我希望在运行时使用ActiveRecord删除并设置我的rails db。最好的方法是什么?我假设我需要删除现有连接,然后重新连接?

有没有人有这方面的经验,你能分享一下正确的步骤吗?

2 个答案:

答案 0 :(得分:0)

您可以非常轻松地使用这些命令rake db:droprake db:createrake 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允许将表增量重置为零。