我有一個註冊表單。Rails 3:rollback for after_create
當用戶註冊時,應用程序應該將數據保存在enrollments
表和users
表中。 (我需要這種分離,因爲用戶的個人資料可能會改變,但是他爲特定註冊輸入的數據必須存檔,所以即使後來用戶改變了他的姓氏,在註冊表中我也會得到他的初始信息。)
所以我想在enrollments
表保存數據,然後有一個after_create呼叫,像這樣...
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
的問題是,如果節省了用戶由於某種原因失敗。我如何回滾和銷燬enrollments
表中剛剛保存的數據?
用戶可以註冊幾次?如果不是,我只是直接在users表中添加額外的字段。 – 2012-07-27 17:15:47
呃,實際上,這是一名家長/監護人將一名孩子招入日託。所以是的,家長可以多次註冊一個孩子。 – leonel 2012-07-27 17:22:39
對我來說,似乎把save_corresponding_user放在after_create中會成爲一個問題。當用戶再次註冊時會發生什麼?你不想爲它們創建一個新的用戶對象。另外,註冊表中可能沒有user_id列嗎?這不會在上面的代碼中填充。如果是我,我只是將註冊和用戶的創建包裝在一個事務中,這將處理在發生錯誤時兩者的回滾。 – 2012-07-27 17:23:23