Sql Rails db:种子未知属性
这里有一个问题 我有一个Rails项目。当我想清除数据库并用一些测试数据填充它时,我运行:Sql Rails db:种子未知属性,sql,ruby-on-rails,database,transactions,Sql,Ruby On Rails,Database,Transactions,这里有一个问题 我有一个Rails项目。当我想清除数据库并用一些测试数据填充它时,我运行: rake db:drop db:create db:migrate db:seed 我有一个错误: NoMethodError:未定义的方法登录# 当我单独运行时: rake db:drop db:create db:migrate rake db:seed 一切顺利 另外,db/seeds.rb中的所有操作都包装在ActiveRecord::Base.transaction块中 我必须在我的db/s
rake db:drop db:create db:migrate db:seed
我有一个错误:
NoMethodError:未定义的方法登录#
当我单独运行时:
rake db:drop db:create db:migrate
rake db:seed
一切顺利
另外,db/seeds.rb中的所有操作都包装在ActiveRecord::Base.transaction
块中
我必须在我的db/seeds.rb的顶部添加User.reset\u column\u information
,以使
rake db:drop db:create db:migrate db:seed
工作
在没有reset\u column\u信息的情况下,我以前没有出现过相同的错误。有人知道为什么会这样吗
PS:在运行rake db:drop db:create db:migrate
之后,在db/schema.rb中有一个“缺失”列,我可以直接在db中看到该列:
重置列信息()公共
重置所有缓存的信息
关于列,这将导致在下一个
请求
此方法最常见的使用模式可能是
迁移,在创建一个表之后,您要填充它
使用一些默认值
您是db:migrate
任务更改users
表中的列信息,但在rake
cammand完成之前,这些更改似乎没有正确写入db/schema.rb
文件。您的db:seed
任务将查看db/schema.rb
以查看它所需的列是否存在,但这将显示与db:migrate
之前相同的模式,除非您将其放在单独的rake
命令中,或者在其前面运行reset\u column\u information()
。谢谢您的回答。听起来合乎逻辑。但为什么会这样呢?为什么以前没有发生过?为什么会发生看看我的答案。为什么以前没有发生过我不能说,因为你没有提供任何关于“以前”的信息。从以前到现在,您的代码或环境发生了什么变化?请显示您的控制器和型号我也有相同的问题和型号User
。