Schienen Transaktion nicht rollback auf Fehler bei der überprüfung

Habe ich zwei Modelle: Benutzer und Firma. Beide erhalten ein Formular, und ich bin mit einer Transaktion so:

 User.transaction do

  @user.save!

  @company.user = @user
  @company.save!

  @user.reload
  @user.company = @company
  @user.save!

 flash[:notice] = "Thank you for your registration."
  redirect_to_index
end

Erhält der Benutzer in der Datenbank gespeichert, auch wenn einer der Validierungen fehlschlägt. Ich habe versucht, indem explizite Fehlerbehandlung von ActiveRecord::RecordInvalid aber es hat nicht geholfen. Ich dachte, die überprüfung würde auslösen des Fehlers ein rollback für die Transaktion sowieso. Jede Hilfe wird sehr geschätzt.

Dank

  • Was RDBMS verwenden Sie? Unterstützt es Transaktionen (MyISAM vs InnoDB)?
  • Ah, ich denke, das ist es. Die meisten Tabellen sind innoDB, aber es gibt einige myisam. Dank
  • Siehe auch stackoverflow.com/questions/2481806/...
InformationsquelleAutor Shagymoe | 2010-02-11
Schreibe einen Kommentar