我正在接管一个 Rails 项目,该项目具有填充的 schema.rb 文件,但奇怪的是它没有迁移文件夹,也没有迁移文件。我对这门语言很陌生,但是架构文件不是根据迁移文件创建的吗?如果我运行“rake db:migrate”,架构文件中的现有表将被删除。这是否意味着之前的开发人员手动编辑了架构文件?我可以在安装 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
然后,您可以在未来继续创建新的迁移。您实际上并不需要旧的迁移文件。
关于ruby-on-rails - Rails 应用程序有 schema.rb 但没有迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34230635/