我有一个注册表单。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