Ich habe ein Anmeldeformular.Schienen 3: Rollback für after_create
Wenn der Benutzer sich anmeldet, soll die App die Daten in der Tabelle und in der users
Tabelle speichern. (Ich brauche diese Trennung, weil das Profil des Benutzers sich ändern kann, aber die Daten, die er für diese bestimmte Registrierung eingegeben hat, müssen archiviert werden. Selbst wenn später der Benutzer seinen Nachnamen ändert, habe ich im Anmeldeformular seine ersten Informationen.)
So etwa dachte ich Daten in der enrollments
Tabelle Speichern dann einen after_create Anruf haben, so ...
class Enrollment < ActiveRecord::Base
after_create :save_corresponding_user
def save_corresponding_user
user = User.new
user.full_name = self.user_full_name
user.email = self.user_email
user.mobile_phone = self.user_mobile_phone
user.save
end
end
die Frage ist, was passiert, wenn der Benutzer aus irgendeinem Grund ausfällt speichern. Wie kann ich die gerade gespeicherten Daten aus der Tabelle enrollments
zurücksetzen und löschen?
ein Benutzer mehrmals einschreiben? Wenn nicht, würde ich einfach die zusätzlichen Felder direkt in der Benutzertabelle hinzufügen. –
Nun, eigentlich ist es ein Elternteil/Erziehungsberechtigter, der ein Kind in eine Kindertagesstätte aufnimmt. Also ja, die Eltern können ein Kind mehrmals anmelden. – leonel
Für mich scheint es, als würde das Setzen von save_corresponding_user in after_create ein Problem sein. Was passiert, wenn sich der Benutzer erneut anmeldet? Sie möchten kein neues Benutzerobjekt für sie erstellen. Hat die Registrierungstabelle wahrscheinlich keine user_id-Spalte? Das wäre oben in deinem Code nicht enthalten. Wenn ich es wäre, würde ich das Erstellen der Registrierung und den Benutzer einfach in eine Transaktion einfügen, die das Zurücksetzen beider im Falle eines Fehlers behandelt. –