Skip to content

@kovacs /gist:216163 forked from technoweenie/gist:180517
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.