ruby-on-rails - Rails 应用程序有 schema.rb 但没有迁移文件

标签 ruby-on-rails ruby rake

我正在接管一个 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/

相关文章:

ruby-on-rails - Ruby:使用 class_eval 定义常量只能通过 const_get 找到,但不能直接通过::lookup 找到

javascript - 如何从 Rails View 调用内部 API(用于 ReactJS 预渲染目的)?

ruby-on-rails - Rails 中的 Rspec 授权

ruby-on-rails - Ruby on Rails ActiveRecord::PendingMigrationError

ruby-on-rails - 在任何来源中都找不到 rake-0.9.2.2

ruby-on-rails - 生产模式的 Ckeditor gem 问题

Ruby if/else 流程

ruby - 哈希到 JSON,然后在 Ruby 中加入另一个 JSON

rake - rake 任务的新格式是什么? (任务 :t, arg,:needs => [deps] versus task :t, [args] => [deps])

ruby-on-rails - 调试 rake 任务