运行 rake db:seed 不是从 seeds.rb 加载的



我正在尝试播种一组足球队和足球位置,奇怪的是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')

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

我将提出一个建议,希望您会看到错误。在您的种子文件中,请使用 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')

替代解决方案?

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

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

这对我有用:

rails db:migrate:reset
rails db:seed

回复:替代解决方案?

小心 - 运行"rails db:migrate:reset"将截断数据库中的所有表,破坏可能存在的任何数据。 此命令适用于从种子设置新数据库,其中初始尝试可能在数据库中留下了不正确或不一致的数据。

来自 Rails 文档:

4.3 重置数据库bin/rails db:reset 命令将删除数据库并重新设置。这在功能上等同于 bin/rails db:drop db:setup。

最新更新