【发布时间】:2020-12-18 09:13:48
【问题描述】:
Rails 6,使用 sqlite3 进行开发。
我的 schema.rb 有一个不应该存在的文件:没有迁移文件(在 current git 分支上)表示应该生成它。通过它的名字,我可以看到它来自我放弃的早期分支,并且没有回去尝试不同的方法来构建我的 rails 应用程序。
仔细检查:当我尝试在 Rails 控制台中访问表时出现名称错误,因此它仅存在于架构文件中,而不存在于数据库本身中。
我可以强制 rails 运行和/或确认当前架构与迁移文件匹配,如果不匹配,是否会运行迁移?
编辑/更新: 我需要澄清一下,我有 6 个迁移文件,我去确认它们都不是来自之前废弃的分支。
(管理员是有问题的表)
ActiveRecord::Base.connection.tables
在 rails 命令行中生成:
["schema_migrations", "ar_internal_metadata", "events", "admins", "details"]
当我做Event 时,我会得到列名和类型。但是当我做管理员时,我得到了
Traceback (most recent call last):
1: from (irb):3
NameError (uninitialized constant Admin)
所以问题是:如何正确地将数据库重置为
【问题讨论】:
-
如果我理解正确你没有迁移,所以 schema.rb 应该是空的,但它不是......并且你想解决这个问题:获取丢失的迁移或确保数据库又是空的,架构 rb 也是?
-
(将编辑初始问题)抱歉没有澄清。我有 6 个迁移文件。我越来越怀疑这个问题是由 GIT 捕获的,因为它在忽略文件中:/db/*.sqlite3 我认为这意味着它不会将数据库添加到存储库中,这是有道理的,因为我必须运行 db :migrate 在生产服务器(heroku)上。
标签: ruby-on-rails git-branch rails-migrations schema.rb