0

Rails 6,使用 sqlite3 进行开发。

我的 schema.rb 有一个不应该存在的文件:没有迁移文件(在当前的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)

所以问题是:如何正确地将数据库重置为

4

2 回答 2

1

schema.rb 文件是从数据库的当前状态自动生成的,因此只需运行rails db:migrate以重新生成 schema.rb 文件

于 2020-12-18T09:17:17.320 回答
0

运行 rails db:migrate:reset removed 似乎已经解决了这个问题:我的架构文件中没有“管理员”,并且ActiveRecord::Base.connection.tables在 rails 命令行中运行时也没有显示。

我相信这是由 Git 引起的,因为它在文件中有数据库:/db/*.sqlite3并且“管理员”是在我之前放弃且从未合并的分支上创建的。所以它被保存在数据库中,但是当我返回并在时间轴上创建一个新分支时,迁移文件被删除了。

于 2020-12-18T18:59:03.947 回答