gpt4 book ai didi

sql - rails 数据库 :seed unknown attribute

转载 作者:太空狗 更新时间:2023-10-30 01:56:24 24 4
gpt4 key购买 nike

这里有一个问题。

我有一个 Rails 项目。当我想清除我的数据库并用我运行的一些测试数据填充它时:

rake db:drop db:create db:migrate db:seed

我有一个错误:

NoMethodError: undefined method login for #<User:0x007fecf46afe80>

当我单独运行时:

rake db:drop db:create db:migrate
rake db:seed

一切顺利。

此外,我在 db/seeds.rb 中的所有操作都包含在 ActiveRecord::Base.transaction 中堵塞。

我必须添加 User.reset_column_information在我的 db/seeds.rb 顶部制作

rake db:drop db:create db:migrate db:seed

工作。

如果没有reset_column_information,我以前不会有同样的错误.有人知道为什么会这样吗?

PS:运行后rake db:drop db:create db:migrate db/schema.rb 中有“缺失”列,我可以直接在数据库中看到该列

最佳答案

来自docs :

reset_column_information() public

Resets all the cached information about columns, which will cause them to be reloaded on the next request.

The most common usage pattern for this method is probably in a migration, when just after creating a table you want to populate it with some default values

您正在 db:migrate 任务更改 users 表中的列信息,但看起来这些更改没有正确写入 db/schema.rb 文件,直到 rake 命令完成。您的 db:seed 任务查看 db/schema.rb 以查看它需要的列是否存在,但这显示了 db 之前的架构:迁移,除非你把它放在一个单独的 rake 命令中,或者你在它之前运行 reset_column_information()

关于sql - rails 数据库 :seed unknown attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37850322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com