2010-03-21 40 views
7

Tôi có một bảng gồm 2 trường. Từ và dấu thời gian. Sau đó, tôi có mảng này có chứa một số từ. Làm cách nào để xóa tất cả các bản ghi trong bảng khớp với các từ trong mảng? Giả sử rằng mô hình được gọi là "Word".Xóa bản ghi khỏi bảng khớp với dữ liệu trong một mảng?

Bất kỳ ý tưởng nào về cách đạt được điều này? có thể lặp qua mảng và chạy một số truy vấn hủy. Ai có thể dẫn tôi đến đây không? thanks

Trả lời

4

Nếu bạn xác định callbacks trên mô hình trần sql sẽ không gọi cho họ. Cách đề nghị trong trường hợp này là:

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

Làm điều này:

Word.delete_all(:words => words_array) 

này sẽ xóa các hàng phù hợp với các từ trong mảng nhất định, trong ONE câu lệnh SQL.

Ví dụ:

words = ["pop", "pop alternative", "r&b"] 
Word.delete_all(:words => words) 
Các vấn đề liên quan