Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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
Ruby on rails 对rails数据库进行种子设定会导致同一帖子被创建两次_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 对rails数据库进行种子设定会导致同一帖子被创建两次

Ruby on rails 对rails数据库进行种子设定会导致同一帖子被创建两次,ruby-on-rails,ruby,Ruby On Rails,Ruby,我只是想给这些坐标设定种子,但是它会为每个post记录创建两个精确的副本。因此,id为1-12的帖子看起来不错,但重复了13-24次。我不明白为什么。我相信代码是可以的,但也许我忽略了什么。是否有人认为有错误或更好的方法可以做到这一点 coordinates = { Albany: [42.40, 73.45], Albuquerque: [35.05, 106.39], Amarillo: [35.11, 101.50], Anchorage: [61.13, 149.54

我只是想给这些坐标设定种子,但是它会为每个post记录创建两个精确的副本。因此,id为1-12的帖子看起来不错,但重复了13-24次。我不明白为什么。我相信代码是可以的,但也许我忽略了什么。是否有人认为有错误或更好的方法可以做到这一点

coordinates = {
  Albany: [42.40,   73.45],
  Albuquerque: [35.05, 106.39],
  Amarillo: [35.11, 101.50],
  Anchorage: [61.13, 149.54],
  Atlanta: [33.45, 84.23],
  Austin: [30.16,   97.44],
  Baker: [44.47, 117.50],
  Baltimore: [39.18, 76.38],
  Bangor: [44.48, 68.47],
  Birmingham: [33.30, 86.50],
  Bismarck: [46.48, 100.47],
  Boise: [43.36, 116.13]
}

image = #path to image

coordinates.values.each do |coordinate|
  Post.create(latitude: coordinate[0], longitude: coordinate[1], image: image)
end
还有控制台

[1] pry(main)> Post.all
  Post Load (1.4ms)  SELECT "posts".* FROM "posts"
=> [#<Post id: 1, latitude: #<BigDecimal:7fc80e901360,'0.424E2',18(45)>, longitude: #<BigDecimal:7fc80e900e10,'0.7345E2',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 2, latitude: #<BigDecimal:7fc80e9127f0,'0.3505E2',18(45)>, longitude: #<BigDecimal:7fc80e911c88,'0.10639E3',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 3, latitude: #<BigDecimal:7fc80e91bf30,'0.3511E2',18(45)>, longitude: #<BigDecimal:7fc80e91bcd8,'0.1015E3',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 4, latitude: #<BigDecimal:7fc80e91a748,'0.6113E2',18(45)>, longitude: #<BigDecimal:7fc80e91a4f0,'0.14954E3',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "
 #<Post id: 5, latitude: #<BigDecimal:7fc80e919398,'0.3345E2',18(45)>, longitude: #<BigDecimal:7fc80e919140,'0.8423E2',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 6, latitude: #<BigDecimal:7fc80e923c30,'0.3016E2',18(45)>, longitude: #<BigDecimal:7fc80e9239d8,'0.9744E2',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 7, latitude: #<BigDecimal:7fc80e922420,'0.4447E2',18(45)>, longitude: #<BigDecimal:7fc80e9220d8,'0.1175E3',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 8, latitude: #<BigDecimal:7fc80e9207d8,'0.3918E2',18(45)>, longitude: #<BigDecimal:7fc80e920490,'0.7638E2',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 9, latitude: #<BigDecimal:7fc80e92aff8,'0.4448E2',18(45)>, longitude: #<BigDecimal:7fc80e92ad78,'0.6847E2',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 10, latitude: #<BigDecimal:7fc80e929b80,'0.333E2',18(45)>, longitude: #<BigDecimal:7fc80e929950,'0.865E2',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 11, latitude: #<BigDecimal:7fc80e928758,'0.4648E2',18(45)>, longitude: #<BigDecimal:7fc80e9284d8,'0.10047E3',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,
 #<Post id: 12, latitude: #<BigDecimal:7fc80e9331f8,'0.4336E2',18(45)>, longitude: #<BigDecimal:7fc80e932f78,'0.11613E3',18(45)>, created_at: "2013-11-02 21:19:37", updated_at: "2013-11-02 21:19:37", image: "apple_icon.png">,

#### starts repeating at 13

 #<Post id: 13, latitude: #<BigDecimal:7fc80e931d58,'0.424E2',18(45)>, longitude: #<BigDecimal:7fc80e931b28,'0.7345E2',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 14, latitude: #<BigDecimal:7fc80e93bda8,'0.3505E2',18(45)>, longitude: #<BigDecimal:7fc80e93b9c0,'0.10639E3',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 15, latitude: #<BigDecimal:7fc80e9382c0,'0.3511E2',18(45)>, longitude: #<BigDecimal:7fc80e943c60,'0.1015E3',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 16, latitude: #<BigDecimal:7fc80e9429c8,'0.6113E2',18(45)>, longitude: #<BigDecimal:7fc80e9426f8,'0.14954E3',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 17, latitude: #<BigDecimal:7fc80e940790,'0.3345E2',18(45)>, longitude: #<BigDecimal:7fc80e940268,'0.8423E2',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 18, latitude: #<BigDecimal:7fc80e94a2b8,'0.3016E2',18(45)>, longitude: #<BigDecimal:7fc80e949e30,'0.9744E2',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 19, latitude: #<BigDecimal:7fc80e953c00,'0.4447E2',18(45)>, longitude: #<BigDecimal:7fc80e9539d0,'0.1175E3',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 20, latitude: #<BigDecimal:7fc80e952238,'0.3918E2',18(45)>, longitude: #<BigDecimal:7fc80e951a90,'0.7638E2',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 21, latitude: #<BigDecimal:7fc80e95b6a8,'0.4448E2',18(45)>, longitude: #<BigDecimal:7fc80e95b388,'0.6847E2',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 22, latitude: #<BigDecimal:7fc80e95a140,'0.333E2',18(45)>, longitude: #<BigDecimal:7fc80e959ee8,'0.865E2',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 23, latitude: #<BigDecimal:7fc80e958cf0,'0.4648E2',18(45)>, longitude: #<BigDecimal:7fc80e958a70,'0.10047E3',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">,
 #<Post id: 24, latitude: #<BigDecimal:7fc80e963740,'0.4336E2',18(45)>, longitude: #<BigDecimal:7fc80e9634c0,'0.11613E3',18(45)>, created_at: "2013-11-02 21:19:44", updated_at: "2013-11-02 21:19:44", image: "apple_icon.png">]
感谢您的帮助。提前感谢

你做过两次rake db:seed吗

如果是,它将两次创建相同的项目

当您运行seed时,如果您想这样做,它不会删除记录

Post.destroy_all
在坐标上方

我回答你们的问题了吗?

你们做过两次rake db:seed吗

如果是,它将两次创建相同的项目

当您运行seed时,如果您想这样做,它不会删除记录

Post.destroy_all
在坐标上方


我是否回答您的问题?

您可以将create调用置于以下条件下:

coordinates.values.each do |coordinate|
  if Post.where( latitude: coordinate[0], longitude: coordinate[1] ).empty?
    Post.create(latitude: coordinate[0], longitude: coordinate[1], image: image)
  end
end
通过这种方式,您可以运行rake db:seed,而不会得到重复


签出

您可以将create调用置于以下条件中:

coordinates.values.each do |coordinate|
  if Post.where( latitude: coordinate[0], longitude: coordinate[1] ).empty?
    Post.create(latitude: coordinate[0], longitude: coordinate[1], image: image)
  end
end
通过这种方式,您可以运行rake db:seed,而不会得到重复


看看

哇,真有趣。我通常创建一个rake任务来为db种子,而不是使用db/seeds.rb。我使用Rake db:reset像往常一样删除数据,但没有意识到它对seeds.rb不起作用。谢谢您的欢迎:您应该使用db/seeds.rb文件和rake db:seed来加载。你不需要任何定制的耙子:哇,这很有趣。我通常创建一个rake任务来为db种子,而不是使用db/seeds.rb。我使用Rake db:reset像往常一样删除数据,但没有意识到它对seeds.rb不起作用。谢谢您的欢迎:您应该使用db/seeds.rb文件和rake db:seed来加载。您不需要任何自定义耙: