运行 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 并在不复制数据的情况下运行它