sql >> Databáze >  >> RDS >> PostgreSQL

Rails nevrací transakci po neúspěšném uložení()

Přidáním položky do sbírky se položka okamžitě uloží (pokud uživatel není uložen). Volání uložení vytvoří vlastní transakci a to je to, co je vráceno zpět, nikoli transakce, ve které je položka uložena

Můžete donutit vše do stejné transakce tím, že ji explicitně vytvoříte.

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. Zamíchejte tabulku v MySQL pomocí uložené procedury

  2. PostgreSQL POPISUJTE TABULKU

  3. Jak zobrazit všechna oprávnění k databázi Oracle pro uživatele

  4. Dynamické kontingenční sloupce v SQL Server