title: Rails 3 ignore Postgres unique constraint exception
body: <p>What's the correct way to rescue an exception and simply continue processing?  I have an app that has Folders and Items, with a habtm relationship through a join table called folders_items.  That table has a unique constraint ensuring that there are no duplicate item/folder combinations.  If the user tries to add an item to the same folder several times, I obviously don't want the additional rows added; but I don't want to stop processing, either.  </p>
  
  <p>Postgres automatically throws an exception when the unique constraint is violated, so I tried to ignore it in the controller as follows:</p>
  
  <pre><code>rescue PG::Error, :with =&gt; :do_nothing
  
  def do_nothing
  
  end
  </code></pre>
  
  <p>This works fine on single insertions. The controller executes the render with a status code of 200.  However, I have another method that does bulk inserts in a loop.  In that method, the controller exits the loop when it encounters the first duplicate row, which is not what I want.  At first, I thought that the loop must be getting wrapped in a transaction that's getting rolled back, but it isn't -- all the rows prior to the duplicate get inserted.  I want it to simply ignore the constraint exception and move to the next item.  How do I prevent the PG::Error exception from interrupting this?</p>