2013-12-12 65 views
7

我在種子文件中有一些代碼需要修改,以便在我多次運行seed命令時不會創建重複記錄。任何方式適應下面的代碼從我的種子文件,以便這是可能的?除非我誤解,否則find_or_create_by方法在這裏似乎不起作用。運行rake db:種子多次而不創建重複記錄?

data_file = Rails.root.join('db/data/data.csv') 

CSV.foreach(data_file) do |row| 
    TownHealthRecord.create(
    city: row[0], 
    state: row[1], 
    country: row[2], 
    zip_code: row[3], 
    area_code: row[4] 
    ) 
end 
+0

你爲什麼認爲'find_or_create_by'在這裏不起作用? – sevenseacat

回答

6

使用驗證。如果您不想重複記錄,請驗證一個或多個字段的唯一性。在你town_health_record.rb

class TownHealthRecord 
    validates_uniqueness_of :city 
    validates uniqueness_of :health, scope: :person # If you wanted to validate a combination of fields 
end 

上加方不要,.create!會引發錯誤。 .create不會。 save!.update_attributes!也一樣。