मुझे पता है कि यह एक पुराना सवाल है, लेकिन मैंने सोचा कि यह किसी के लिए सहायक हो सकता है। डेटाबेस से सभी डेटा साफ़ करने का यह एक तेज़ तरीका है।
tables = []
ActiveRecord::Base.connection.execute("show tables").each { |r| tables << r[0] }
tables = tables - ["schema_migrations"]
tables.each do |table|
ActiveRecord::Base.connection.execute("DELETE FROM #{table} WHERE 1 = 1")
end
मैं इस तकनीक का उपयोग after(:all)
ब्लॉक में कुछ चश्मे में करता हूं। यह डेटाबेस को रीजिंग, माइग्रेट करने, रीसेट करने के लिए किसी भी रेल रेक कार्यों की तुलना में बहुत तेज़ और अधिक कुशल है।
बीटीडब्ल्यू: मुझे पूरा यकीन है कि यदि आप डेटाबेस पक्ष पर विदेशी कुंजी बाधाओं को लागू कर रहे हैं तो यह असफल हो जाएगा।
स्रोत
2010-06-10 23:36:26
अच्छा, हालांकि मैं एक ऐसी विधि पसंद करूंगा जिसमें सभी तालिकाओं को छोड़ने और फिर से बनाने की आवश्यकता न हो। –
* बस * तालिका पंक्तियों को हटाने के लिए एक तेज़, अधिक सटीक तरीका TRUNCATE कमांड का उपयोग करना है: http://stackoverflow.com/a/6332189/109618 –
यह एक अपवाद फेंकता है जब मैं इसे चलाने की कोशिश करता हूं, जाहिर है, [sqlite TRUNCATE कमांड नहीं है] (http://www.sqlite.org/lang.html)। –