我正在尝试从schema.rb
创建所有表我使用了命令:“rake db:schema:load”
然而,这失败了,因为在我的一个初始化器中,它引用了一个显然不存在的模型/表(因为数据库为空)
我可以注释掉这些行,然后运行schema:再次加载,但还有其他选择吗?
答案 0 :(得分:39)
可能最快的方法是将有问题的初始化程序移动到应用程序之外的临时目录,然后运行架构加载。但是,如果这不起作用,或者由于某种原因不是一个选项,你总是可以通过创建一个简单的rails应用程序来解决这个问题:
rails new (app)-fixer
gemfile
(除非有特定例外情况)复制到修复程序应用程序。database.yml
配置复制到修复程序应用。schema.rb
文件复制到修复程序应用程序。"rake db:drop db:create db:schema:load"
这将根据您当前的架构从头开始构建一个新数据库。
答案 1 :(得分:6)
您可以在初始化程序中添加对表存在的检查。
if TheModel.table_exists?
// do something with the model
end