Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Rails db:种子未知属性_Sql_Ruby On Rails_Database_Transactions - Fatal编程技术网

Sql Rails db:种子未知属性

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

这里有一个问题

我有一个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/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