运行 rake db:seed 未从 seed.rb 加载

Posted

技术标签:

【中文标题】运行 rake db:seed 未从 seed.rb 加载【英文标题】:Running rake db:seed isn't loading from seeds.rb 【发布时间】:2012-11-17 00:13:04 【问题描述】:

我正在尝试为一组足球队和足球位置播种,但奇怪的是,Rails 根本没有这样做。

rake db:seed --trace
** Invoke db:seed (first_time)
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:abort_if_pending_migrations

一切看起来都很好,但是当我打开我的网站时(以前工作得很好,我知道这不是那里的代码)没有记录。

我正在加载三个对象:球队、球员和位置。有趣的是,当我要组建新团队时,没有场地,但当我要组建新球员时,却有场地。

Seeds.rb 如下所示:

position = Position.create(:positionName => 'Quarterback', :positionShort => 'QB', :stance => 'offense')
team = Team.create( name:'Patriots', location:'New England', conference:'AFC', division:'East', wins:'5', losses:'3')

让我知道您还需要看什么,我正处于缺乏经验和莫名其妙的错误的十字路口。

【问题讨论】:

【参考方案1】:

我将提出一个建议,希望您能看到错误。在你的种子文件中使用create! 而不是create。如果模型不满足约束,这将导致操作抛出异常。试一试,看看是否有帮助。

position = Position.create!(:positionName => 'Quarterback', :positionShort => 'QB', :stance => 'offense')
team = Team.create!( name:'Patriots', location:'New England', conference:'AFC', division:'East', wins:'5', losses:'3')

【讨论】:

好叫丹和本(像杰克逊五人乐队一样唱歌)输掉了蛇案。毛 :-) :position_short:position_name 等... 五块钱它的 attr_accessible 非常感谢!那成功了。我有大量的验证问题,它解决了所有问题,并且做到了。非常感谢。 如果可以的话会+10 这是一个很好的解决方案,兄弟。真的很有帮助。非常感谢。 在模型抛出异常并且甚至没有尝试执行 SQL 时派上用场。出色的抓地力。 create! 就是答案。【参考方案2】:

替代解决方案?

大家好,只是想添加一个可能的解决方案,以防上面的以下建议不起作用。

我必须重置我的数据库,否则 rails 'db:seed' 会以与上述相同的方式失败。

这对我有用:

rails db:migrate:reset
rails db:seed

【讨论】:

或者只是rails db:setup

以上是关于运行 rake db:seed 未从 seed.rb 加载的主要内容,如果未能解决你的问题,请参考以下文章

如何在亚马逊 opswork 中运行 rake db:seed

附加到 rake db:seed in rails 并在不复制数据的情况下运行它

Rails:当我运行 rake db:seed 时,US-ASCII 中的字节序列无效(参数错误)

我可以将参数传递给 rake db:seed 吗?

在服务器上运行db:seed数据填充时,出错的问题解决

Laravel php artisan db:seed 导致“use”语句错误