2013-12-12 14 views
7

Ho un codice in un file seme che vorrei modificare in modo che non crei record duplicati quando eseguo il comando seed più volte. Qualche modo per adattare il codice qui sotto dal mio file di semi in modo che questo sia possibile? Il metodo find_or_create_by non sembra funzionare qui a meno che non mi sbagli.Esegui un rake db: semina più volte senza creare record duplicati?

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

perché pensi che "find_or_create_by' non funzioni qui? – sevenseacat

risposta

6

Utilizzare una convalida. Se non vuoi record duplicati, convalida l'unicità di uno o più campi. In te 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 

Su un lato aggiunto non, .create! solleverà errori. .create no. Lo stesso vale per save! e .update_attributes!.