On Aug 26, 3:56 pm, Adriano Nagel <a...@safira.com> wrote: > 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
Is entry a member of the entries collection ? If so then the docs on associations state "All unsaved (new_record? == true) members of the collection are automatically saved when the parent is saved." ie when you call feed.save! unsaved association members are saved. Fred > 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 rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---