将保存最后一个元素。您可以运行脚本17次,并保存所有内容。发生了什么?!
class Cities
include DataMapper::Resource
property :id, Serial
property :header, String
default_scope(:default).update(:order => [:id.desc])
end
@countries = [ "Mumbai", "Delhi", "Bengaluru", "Hyderabad", "Ahmedabad", "Accra", "Kumasi", "Lagos", "Kano", "Ibadan", "Beijing", "Shanghai", "Guangzhou", "Hangzhou", "Chongqing", "Wuhan" ]
c = Cities.new
@countries.each { |x|
c.header = x
c.save
}发布于 2017-03-10 13:39:48
因为c是在循环外部初始化的,所以您只是一次又一次地覆盖相同的对象。
解决方案是将c初始化移到循环中,如下所示:
@countries.each { |x|
c = Cities.new
c.header = x
c.save
}或者简单地说:
@countries.each { |x|
Cities.create!(header: x)
}另外,您的型号名称应该是单数,而不是复数。因此,您应该将其命名为City而不是Cities。
另外,使您的循环变量名更具描述性,因此可以将其命名为country,而不是x。
https://stackoverflow.com/questions/42710830
复制相似问题