title: Rails - returning false from before_create prevents changes to other models
body: <p>I have a <code>before_create</code> filter that checks if people are posting too many comments.</p>
  
  <p>If they are I want to flag their account.</p>
  
  <pre><code>class Comment &lt; ActiveRecord::Base
    before_create :check_rate_limit
  
    def check_rate_limit
      comments_in_last_minute = self.user.comments.count(:conditions =&gt; ["comments.created_at &gt; ?", 1.minute.ago])
      if comments_in_last_minute &gt; 2
        user.update_attribute :status, "suspended"
        return false
      end
      true
    end
  end
  </code></pre>
  
  <p>The before filter returns false to stop the comment from being created.  The problem is that this triggers a ROLLBACK which also undoes the changes I made to the user model.</p>
  
  <p>What's the correct pattern to accomplish this?  Specifically: running a check each time an object is created and being able to edit another model if the check fails.</p>