我正在使用seed.rb启动我的应用程序。
#seeds.rb, create categories and see if they are saved or not
categories = Category.create([{name:'name1'},{name:'name2'}, {name: 'name3'} ])
if categories.all?(&:save)
puts "categories saved"
else
puts "categories saved failed"
end在分类模型中,我有:before_Save :get_external_resources,所以我可以使用nokogiri在我的站点之外获取一些东西
问题是,当我运行rake db:seed时,类别将被保存两次。我试着关掉before_save,它只保存了一次。所以我猜all?(&:save)和before_save已经分别保存了这个数组两次。
我怎样才能避免额外的节省?在保存对象之前,我需要做一些事情,我想知道这些对象在播种时是否保存。那after_create呢?我想我需要在方法中添加self.save,并且可能会有一些验证问题?
发布于 2013-07-21 20:57:30
.create和.save都会保存记录,并且每个都会触发before_save回调。(如果您不希望保存.create,请更改为Category.new
如果您希望get_external_resources只执行一次,您可以执行以下操作之一:
将其更改为before_save :get_external_resources, on: :create
get_external_resources,以便只运行一次https://stackoverflow.com/questions/17772537
复制相似问题