2010-03-21 14 views
7

2 alanlı bir tablom var. Word ve zaman damgası. Sonra bazı kelimeler içeren bu dizilim var. Tablodaki tüm kayıtları dizideki kelimelerle eşleşen silerim? Modelin "Word" olarak adlandırıldığını varsayalım.Dizideki verilerle eşleşen tablodaki kayıtları silin.

Bunu nasıl gerçekleştireceğinizle ilgili herhangi bir fikir var mı? Belki dizi boyunca döngü ve bazı sorgular yok çalıştırın. Beni buraya yönlendiren var mı? thanks

cevap

4

Modelde geri aramalar tanımladıysanız, sql sql onları çağırmaz. Bu durumda önerilen yol:

deletable_words = [ 'php', 'c++' ] 
objs = Word.find(:all, :conditions => [ "words.word IN (?)", deletable_words]) 
objs.each { |o| o.destroy } 
18

yapın:

Word.delete_all(:words => words_array) 

Bu ONE SQL deyiminde, verilen dizideki kelimelerle eşleşen satırları silecektir.

Örn .:

words = ["pop", "pop alternative", "r&b"] 
Word.delete_all(:words => words) 
İlgili konular