Rails 6,用sqlite3进行开发。
我的schema.rb有一个不应该存在的文件:没有迁移文件(在当前的git分支上)说应该生成它。从名字上我可以看出,这是我之前放弃的一个分支,而wen没有回来尝试一种不同的方法来构建我的rails应用。
双重检查:当我试图访问Rails控制台中的表时,会得到一个名称错误,所以它只在模式文件中,而不是在数据库本身中。
我是否可以强制rails运行和或确认当前模式是否匹配迁移文件,如果不匹配,将运行迁移吗?
编辑/更新:--我需要澄清一下,我有6个迁移文件,我查看了这些文件,以确保它们都不是来自以前被遗弃的分支。
(admins是引起争议的表) rails命令行中的ActiveRecord::Base.connection.tables生成:["schema_migrations", "ar_internal_metadata", "events", "admins", "details"],当我执行Event时,将得到列的名称和类型。但是当我做管理的时候
Traceback (most recent call last):
1: from (irb):3
NameError (uninitialized constant Admin)因此,问题是:如何正确地将数据库重置为
发布于 2020-12-18 09:17:17
schema.rb文件是从数据库的当前状态自动生成的,所以只需运行rails db:migrate来重新生成schema.rb文件即可。
发布于 2020-12-18 18:59:03
运行rails db:migrate:reset removed似乎解决了这个问题:我的模式文件中没有'admins‘,而且它在rails命令行中运行ActiveRecord::Base.connection.tables时也不会显示出来。
我相信这是由Git引起的,因为它在文件中包含了DB:/db/*.sqlite3和'admins‘是在我先前放弃的分支上创建的,从未合并过。因此,它被保存在数据库中,但是迁移文件在我返回的时候被删除了,并在时间线的早些时候创建了一个新的分支。
https://stackoverflow.com/questions/65354329
复制相似问题