ActiveRecord delete_all With Sanitized Parameters?


#1

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


#2

Lance B. wrote:

  Context.delete_all("uri IN (?)", uris)

did you try ‘Context.delete_all([“uri IN (?)”,uris])’ ?


#3

On 1/4/06, Kevin O. removed_email_address@domain.invalid 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


#4

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