2013-12-12 2 views
7

मेरे पास एक बीज फ़ाइल में कुछ कोड है जिसे मैं बदलना चाहता हूं ताकि जब मैं कई बार बीज कमांड चलाता हूं तो यह डुप्लिकेट रिकॉर्ड नहीं बनाता है। मेरे बीजों की फाइल से नीचे दिए गए कोड को अनुकूलित करने का कोई तरीका है ताकि यह संभव हो? Find_or_create_by विधि तब तक काम नहीं करती जब तक कि मैं गलत नहीं हूं।एक रेक डीबी चलाएं: डुप्लिकेट रिकॉर्ड बनाए बिना कई बार बीज?

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! के लिए ही चला जाता है।

संबंधित मुद्दे