我正在接管一个有一个填充的schema.rb文件的Rails项目,但奇怪的是它没有一个迁移文件夹而且没有迁移文件。我对语言很陌生但是没有基于迁移文件创建模式文件?如果我运行" rake db:migrate",架构文件中的现有表将被删除。这是否意味着之前的开发人员手动编辑了模式文件?我可以在安装Ruby / Rails时删除迁移文件吗?
此外,日志显示以下错误:
PG::UndefinedTable: ERROR: relation "nameoftable" does not exist
这是否与没有迁移文件的事实有关?
我正在努力创建迁移文件,但我想确认我正确理解了这一点。
提前致谢。
答案 0 :(得分:1)
是否根据迁移文件创建了架构文件?
是的,但他们可以独立生存。我可以创建我的架构并通过多次迁移对其进行修改,然后在将项目发送给您之前删除迁移。
Rails仍然可以正常运行,因为他关心的是schema.rb
文件的内容。
如果要构建数据库,则应从schema.rb
加载架构,而不是使用rake db:migrate
。在一个非常大且寿命很长的Rails项目中,您无法保证所有迁移都能够从第一个迁移到最后一个。
您设置数据库的方式是使用命令
rake db:schema:load
然后从那里开始,您可以继续创建新的迁移。您实际上并不需要旧的迁移文件。