PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rails setzt Transaktion nach fehlgeschlagenem Speichern nicht zurück ()

Wenn Sie ein Element zur Sammlung hinzufügen, wird es sofort gespeichert (es sei denn, der Benutzer ist nicht gespeichert). Der Aufruf zum Speichern erstellt eine eigene Transaktion, und diese wird rückgängig gemacht, nicht die Transaktion, in der das Element gespeichert ist

Sie könnten alles in dieselbe Transaktion zwingen, indem Sie explizit eine erstellen.

begin
  User.transaction do
    @user.items << item
    @user.save!
    render :json => {}, :status => :ok
  end
rescue ActiveRecord::RecordInvalid
  render :json => {:status => :error, :errors => item.errors}, :status => :bad_request
end