繁体   English   中英

从命令行使用destroy_all后无法播种数据库

[英]Can't seed database after using destroy_all from command line

在我的应用程序中,有用户可以创建的帖子。 当我最初开始我的项目时,我从命令行创建了一些占位符Posts和Users,以便我可以玩耍。 随着应用程序的升级,我创建了一个种子文件,并从命令行运行了“ rake db:seed”。 一切正常,但我意识到我仍然在数据库中保留占位符Posts和Users,因此我决定删除它们。 我决定使用'destroy_all'方法从命令行中销毁所有帖子和用户。 我只是想看看它是否可以工作,并且一切都删除了,所以它确实可以工作。 但是现在当我运行“ rake db:seed”来填充数据库时,什么都没有显示。 从命令行运行Post.all或User.all时,我没有任何错误,也没有返回任何内容。 我不确定发生了什么,但是我将不胜感激,谢谢!

User.create(name: 'John', email: 'John@gmail.com', password: '123456', password_confirmation: '123456')
User.create(name: 'Bill', email: 'Bill@gmail.com', password: '123456', password_confirmation: '123456')


Post.create([
  {
    user_id: 1,
    category_id: 1,
    title: "Tech tattoos put a working circuit board on your skin",
    url: "http://www.slashgear.com/tech-tattoos-put-a-working-circuit-board-on-your-skin-25416060/" 
  },
  {
    user_id: 2,
    category_id: 1,
    title: "This robot can print emoji on your fingernails",
    url: "http://mashable.com/2015/11/24/nailbot-printed-manicure/#Rml2qXalMmqp" 
  },
  {
    user_id: 3,
    category_id: 2,
    title: "Thiago Silva scores a goal from behind the goal",
    url: "http://www.gyfbin.com/2015/11/hgfp.gif.html" 
  }])

有一种简单的方法可以看到错误消息。 您可以在创建方法后使用bang(!)(例如:User.create!(.....),Post.create!(.....))。 出现任何错误时,控制台将引发错误消息。 如果您也这样做。 您可以搜索自己的错误。

destroy_all不会删除该表。 首先,您运行种子文件。 因此,创建了5个ID为1至5的用户。 它会破坏用户,但不会截断。 然后销毁那些用户。 再次运行种子文件。 现在创建了5个ID为6到10的用户。 因此,不再有1的user_id 可能是问题所在。

解决方案1:您可以删除表(用户,发布),然后进行迁移和播种。

解决方案2:随机选择用户ID。 采用:

users = User.all.collect{|u| u.id}
# same goes for category.
Post.create([
  {
    user_id: users.sample,
    category_id: 1,
    title: "Tech tattoos put a working circuit board on your skin",
    url: "http://www.slashgear.com/tech-tattoos-put-a-working-circuit-board-on-your-skin-25416060/" 
  },
  {
    user_id: users.sample,
    category_id: 1,
    title: "This robot can print emoji on your fingernails",
    url: "http://mashable.com/2015/11/24/nailbot-printed-manicure/#Rml2qXalMmqp" 
  },
  {
    user_id: users.sample,
    category_id: 2,
    title: "Thiago Silva scores a goal from behind the goal",
    url: "http://www.gyfbin.com/2015/11/hgfp.gif.html" 
  }])

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM