Mam formularz rejestracyjny.Szyny 3: wycofanie dla after_create
Gdy użytkownik się zarejestruje, aplikacja ma zapisać dane w tabeli enrollments
oraz w tabeli. (Potrzebuję tej separacji, ponieważ profil użytkownika może się zmienić, ale dane, które wprowadził do tej konkretnej rejestracji, muszą zostać zarchiwizowane, więc nawet jeśli później użytkownik zmieni swoje nazwisko, w formularzu rejestracji otrzymam jego wstępne informacje.)
Więc myślałem o zapisywanie danych w tabeli enrollments
następnie mają after_create rozmowę, jak to ...
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
problem jest, co jeśli nie oszczędzając użytkownikowi jakiegokolwiek powodu. Jak mogę przywrócić i zniszczyć właśnie zapisane dane ze stołu enrollments
?
Czy użytkownik może zapisać kilka razy? Jeśli nie, po prostu dodaję dodatkowe pola bezpośrednio do tabeli użytkowników. –
Właściwie to rodzic/opiekun zapisujący dziecko do przedszkola. Więc tak, rodzic może zapisać dziecko kilkakrotnie. – leonel
Dla mnie wygląda na to, że umieszczenie save_corresponding_user w after_create będzie problemem. Co się stanie, gdy użytkownik zarejestruje się ponownie? Nie chcesz utworzyć dla nich nowego obiektu użytkownika. Czy tabela rejestrowania prawdopodobnie nie zawiera kolumny user_id? To nie zostanie wypełnione w powyższym kodzie. Gdyby to był ja, po prostu owinąłbym formularz rejestracji i użytkownika w transakcji, która zajmie się wycofaniem obu w przypadku błędu. –