Rails 应用程序有 schema.rb 但没有迁移文件

Rails Application has schema.rb but no migrate files

我正在接管一个 Rails 项目,该项目有一个已填充的 schema.rb 文件,但奇怪的是它没有迁移文件夹,也没有迁移文件。我对这门语言还很陌生,但是模式文件不是基于迁移文件创建的吗?如果我 运行 "rake db:migrate",架构文件中现有的 table 将被删除。这是否意味着之前的开发人员手动编辑了模式文件?我可以在安装 Ruby/Rails 时删除迁移文件吗?

此外,日志显示此错误:

PG::UndefinedTable: ERROR:  relation "nameoftable" does not exist

这是否与没有迁移文件有关?

我现在正在创建迁移文件,但我想确认我是否理解正确。

提前致谢。

doesn't the schema file get created based on the migration files?

是的,但他们可以独立生存。我可以创建我的架构并通过多次迁移对其进行修改,然后在将项目发送给您之前删除迁移。

Rails 仍然会正常启动,因为他关心的是 schema.rb 文件的内容。

如果你想构建你的数据库,你应该从 schema.rb 加载模式而不是使用 rake db:migrate。在一个非常大且长期存在的 Rails 项目中,您不能保证所有的迁移都能够 运行 从第一个到最后。

设置数据库的方式是使用命令

rake db:schema:load

然后您可以从那里开始在未来创建新的迁移。你真的不需要旧的迁移文件。