2013-02-19 14 views
9

में पहले बीजित डेटा पूर्ववत करें मैंने db/seed.rb फ़ाइल संपादित करके और rake db:seed आदेश को संपादित करके मेरी तालिका में डेटा की एक पंक्ति बीजित की है। अनजाने में, मैंने उस पंक्ति में कुछ गलत जानकारी डाली। इसलिए मैं डेटा की पहले जोड़ी गई पंक्ति को हटाना चाहता हूं। rake db:migrate के लिए इसके लिए कोई रेक आदेश है।रेल

1:

+2

ड्रॉप डेटाबेस, दोबारा बनाएं और पुनः बीज। :) –

+0

@ सर्वियो तुलेंटसेव: मैं सहमत हूं। लेकिन मुझे पिछले बीज से पहले डेटा पहले रखना था। मैं केवल अंतिम बीज वाले डेटा को हटाना चाहता हूं। क्या आप कृपया ऐसा करने में मेरी मदद कर सकते हैं। –

+2

इसके लिए कोई रेक कार्य नहीं है। मैन्युअल रूप से डेटा ढूंढें और हटाएं। यदि आप इसे फिर से होने की उम्मीद करते हैं, तो एक स्क्रिप्ट लिखें। –

उत्तर

3

इस के पहलुओं के एक जोड़े हैं

आप बस बीज को अद्यतन करने के बाद फिर से करना rake db:seed चाहिए: जब कोई अन्य डेटा डेटाबेस में मौजूद है आप बीज डेटा को बदलना चाहते हैं आरआरबी फ़ाइल। सुनिश्चित करें कि आपके पास उस मॉडल में कुछ भी जोड़ने का प्रयास करने से पहले MyModel.delete_all है।

2: आप बीज डेटा को बदलना चाहते हैं, लेकिन अन्य डेटा डेटाबेस

को जोड़ा गया यह थोड़ा मुश्किल है देखते हैं। अक्सर यहाँ करने के लिए सबसे आसान बात मैन्युअल रूप से या तो कच्चे एसक्यूएल-बयान के साथ डेटा को बदलने, या PhpPpAdmin जैसे उपकरणों का उपयोग करते हैं, PhpMyAdmin आदि


अब साथ करने के लिए है, वहाँ possiby एक तरह से यह एक साथ हैक करने के लिए है , और वह seed.rb फ़ाइल में कुछ वूडू करना होगा। तो तुम rake db:seed deseed=true चला सकते हैं, तो अपने seed.rb में:

if ENV['deseed'] 
    #Do your deseeding action here 
else 
    #Do your seeding here. 
end 

तुम भी असली पागल हो सकता है और कुछ इस तरह करते हैं:

deseed = ENV['desee'] 

#DANGER: Dirty hacks upcoming: 
deseed? myModelCall = MyModel.method(:destroy_all): myModelCall = MyModel.method(:create) 

myModelCall.call :user_id_or_whatevs => 23 #this creates or deletes a MyModel entity with the given parameters 
#NOTE this might not work in all cases and I would not necessarily recommend doing this. 

#<3uby