등록 양식이 있습니다.레일 3 : 롤백 (after_create)
사용자가 등록 할 때 앱은 enrollments
테이블과 users
테이블에 데이터를 저장합니다. (사용자 프로필이 변경 될 수 있기 때문에이 분리가 필요하지만 특정 등록에 대해 입력 한 데이터는 보관해야하므로 나중에 사용자가 성을 변경하더라도 등록 양식에 초기 정보가 있습니다.)
그래서 나는 ... 이런 식으로, 다음 after_create 전화를 가지고있는 enrollments
테이블에 데이터를 저장에 대해 생각했다
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
테이블에서 방금 저장 한 데이터를 롤백하고 삭제하려면 어떻게해야합니까?
사용자가 여러 번 등록 할 수 있습니까? 그렇지 않으면 사용자 테이블에 직접 추가 필드를 추가합니다. –
사실, 실제로 보육원에 아이를 입양하고있는 부모/보호자입니다. 그래서 예, 부모는 자녀를 여러 번 등록 할 수 있습니다. – leonel
나에게 그것은 after_create에 save_corresponding_user를 두는 것이 문제가 될 것 같습니다. 사용자가 다시 등록하면 어떻게됩니까? 당신은 그들을 위해 새로운 사용자 객체를 생성하고 싶지 않을 것이다. 또한 등록 테이블에 user_id 열이 없을 가능성이 있습니까? 위의 코드에서는이 값을 채울 수 없습니다. 그것이 나 였다면 오류가 발생했을 때 두 가지 모두 롤백을 처리하는 트랜잭션에서 등록 및 사용자 작성을 마무리합니다. –