Revisions
-
technoweenie created this gist
Sep 3, 2009 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,32 @@ One other cause is your :dependent callbacks. class Blog < AR::Base has_many :posts, :dependent => :destroy end This will iterate through every post and call #destroy on it. Use :delete_all if you want to just issue a single delete query. HOWEVER, this won't hit your destroy callbacks on Post. class Blog < AR::Base has_many :posts after_destroy :purge_posts private def purge_posts # one step better, it only loads a page of posts and hits every post destroy callback posts.paginated_each { |p| p.destroy } # even better, but not very dry # cheating a bit w/ a denormalized Comment table, # but this is a blog comment and i'm pressed for time :) Comment.delete_all :blog_id => id Post.delete_all :blog_id => id end The solution I've been using for this is WillPaginate. # instantiate only 30 users at a time User.paginated_each do |user| user.do_some_stuff! end Keep in mind that using Sequel or DM won't make you immune to all these (though DM has a nice identity map that helps in a lot of cases).