Hi there I'm trying to delete a set of active record objects based on certain conditions. I'd like to do something like the following: Context.delete_all("uri IN (?)", uris) But delete_all doesn't allow multiple arguments. Since I don't have the IDs for the objects I want to delete, I can't use delete(id), and have resorted to this, which is significantly slower since it has to instantiate each object, and there are individual SQL statements for each delete. Am I missing something obvious? contexts = Context.find(:all, :include => :terms, :conditions => ["uri IN (?)", uris]) contexts.each do |context| context.destroy end Thanks Lance
on 2006-01-04 21:03
on 2006-01-04 21:23
Lance B. wrote: > Context.delete_all("uri IN (?)", uris) did you try 'Context.delete_all(["uri IN (?)",uris])' ?
on 2006-01-04 23:03
On 1/4/06, Kevin O. <firstname.lastname@example.org> wrote: > Lance B. wrote: > > > Context.delete_all("uri IN (?)", uris) > > did you try 'Context.delete_all(["uri IN (?)",uris])' ? Well, I guess we all have our moments to be _very_embarrassed_! Thanks - that did the trick. Lance
on 2006-01-04 23:07
Bad form to reply to my own post, but... This does work, however, it has a drawback. Using context.destroy also removes associated rows in my habtm mapping table. Context.delete_all does not. Back to the drawing board... Lance