activerecord没有破坏

时间:2012-12-06 01:42:01

标签: ruby-on-rails-3 activerecord rake

我有以下代码,大部分都在使用。但是我确实收到错误消息,因为邮件地址已经存在,所以无法保存。当我首先执行destroy_all时,这怎么可能?

我的猜测:有多个行具有相同的邮件地址(这是真的),并且它似乎不会破坏那些通过以下过程插入的行。

有没有办法强制它也考虑到这些?

namespace :db do

  desc "load vdc members from google CSV"
  task :load_csv_data  => :environment do
    require 'csv'

    CSV.foreach("data.csv",{:headers=>:first_row}) do |row|

      User.destroy_all(:email => row[7])

      user = User.new(
          :password => "temppwd",
          :name => row[1],
          :first_name => row[2],
          :birth_date => row[3],
          :street => row[4],
          :zipcode => row[5],
          :town => row[6],
          :email => row[7],
          :certificate_id => Certificate.find_by_name(row[9]).id,
          :external_certificates => row[11],
          :education_level => row[12],
          :phone_number => row[15]
      )
      if user.save
        puts "saved " + row[1] + " " + row[2]
      else
        puts "Could not save " + row[1] + " " + row[2] + " due to "
        puts user.errors.full_messages.first if user.errors.any?
      end
    end
  end
end

0 个答案:

没有答案