It would appear that every time I save an ActiveRecord object rails
begins a database transaction before saving it, then commits after
inserting the data into the table. The problem with that is that I am
getting an this uninformative error:
ActiveRecord::StatementInvalid: PGError: ERROR: current transaction
is aborted, commands ignored until end of transaction block
: INSERT INTO pictures (....
Which tells me nothing about why the INSERT actually failed.
Apparently other people have ran into this as well:
I'd like to either disable transactions (at least for the sake of
functional tests) or still be able to retrieve my error somehow. Any
advice on either would be much appreciated.
Which PGSQL adapter are you using? I use Postgres with Rails also, and
while it does wrap everything in a transaction I don't get the error
your getting. Personally I wouldn't be turning transactions off, and
the error is there for a reason.
Make sure your using the postgres-pr (0.4.0) gem.
I found out what is causing it. There are exceptions being thrown in
my before_ and after_ callbacks for my model. Can rail re-throw the
exception it catches and display that error rather than the one I'm
getting now?