sql >> Database >  >> RDS >> PostgreSQL

Rails rolt transactie niet terug na mislukte save()

Door een item aan de collectie toe te voegen, wordt het onmiddellijk opgeslagen (tenzij de gebruiker niet is opgeslagen). De oproep om op te slaan creëert zijn eigen transactie en dat is wat wordt teruggedraaid, niet de transactie waarin het item is opgeslagen

Je zou alles in dezelfde transactie kunnen forceren door er expliciet een te maken.

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


  1. RONDE() Voorbeelden in SQL Server

  2. postgres array_agg ERROR:kan geen arrays van verschillende dimensionaliteit accumuleren

  3. AWS MySQL RDS versus AWS DynamoDB

  4. ASIN() Voorbeelden in SQL Server