Hi,
I'm a bit puzzled with an ActiveRecord::StatementInvalid exception
that's apparently being thrown twice.
I'm using Rails 2.3.3 and Postgres, and inside the Feed Model I have
something like:
has_many :entries, :dependent => :delete_all
def process_feed
...
process_feed_entries
# log saving feed
save! # will fail if an exception is thrown below
end
def process_feed_entries
...
begin
# log saving entry
entry.save! # can fail because of duplicate key values
rescue ActiveRecord::StatementInvalid => e
# log exception caught
# log the error in the db (Log Model)
end
end
DB log:
* Saving entry
BEGIN
PGError: ERROR: duplicate key value ... : INSERT INTO "entries" ...
ROLLBACK
* Exception caught
BEGIN
INSERT INTO "logs" ...
COMMIT
* Saving feed
BEGIN
UPDATE "feeds" ...
PGError: ERROR: duplicate key value ... : INSERT INTO "entries"
ROLLBACK
ActiveRecord::StatementInvalid: PGError: ERROR: duplicate key ...
Stack trace
The last exception that terminates execution was (or should have been)
caught inside the begin/rescue block. Why is it thrown again when the
feed is saved, if the transaction was rolled back?
Any hints much appreciated!
Thanks,
--
Adriano
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---