Ruby on rails 对rails数据库进行种子设定会导致同一帖子被创建两次
我只是想给这些坐标设定种子,但是它会为每个post记录创建两个精确的副本。因此,id为1-12的帖子看起来不错,但重复了13-24次。我不明白为什么。我相信代码是可以的,但也许我忽略了什么。是否有人认为有错误或更好的方法可以做到这一点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
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来加载。您不需要任何自定义耙: