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!
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!
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