http://edgeapi.rubyonrails.org/classes/ActiveRecor... under "Exception handling and rolling back" says that "*One should restart the entire transaction if an ActiveRecord::StatementInvalid occurred.*" My question is how? I tried wrapping the statements in two separate transaction block but that still doesn't work. I have something like: self.transaction do bar = create!(params) rescue nil end unless bar self.transaction do bar = find_or_initialize_by(foo: foo) bar.update(params) end end and PG would still complain about it with "PG::Error: ERROR: current transaction is aborted, commands ignored until end of transaction block". So my question is whether there is a proper way of restarting the transaction? Thanks! Ken
on 2013-06-03 17:29

on 2013-06-03 17:58

On Jun 3, 2013, at 9:27 AM, Ken Ip wrote: > and PG would still complain about it with "PG::Error: ERROR: current transaction is aborted, commands ignored until end of transaction block". So my question is whether there is a proper way of restarting the transaction? Thanks! rollback -- Scott Ribe scott_ribe@elevated-dev.com http://www.elevated-dev.com/ (303) 722-0567 voice
on 2013-06-04 05:03

Thanks for the reply, Scott. Can you show me how? I've tried per this<http://api.rubyonrails.org/classes/ActiveRecord/Ro... but it still doesn't work. self.transaction do bar = create(params) rescue nil raise ActiveRecord::Rollback unless bar end unless bar self.transaction do bar = find_or_initialize_by(foo: foo) bar.update(params) end end
on 2013-06-25 17:43

Look at the actual SQL in the logs. On Jun 3, 2013, at 9:01 PM, Ken Ip wrote: > bar.update(params) > > -- > You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. > To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk.... > For more options, visit https://groups.google.com/groups/opt_out. > > -- Scott Ribe scott_ribe@elevated-dev.com http://www.elevated-dev.com/ (303) 722-0567 voice