私は登録フォームを持っています。Rails 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
テーブルから保存したばかりのデータをロールバックして破壊するにはどうすればよいですか?
をユーザーが複数回登録することができますか?もしそうでなければ、私は追加のフィールドをusersテーブルに直接追加します。 –
実は、それは子供を託児所に入学させる親/保護者です。はい、親は子供を何度か登録することができます。 – leonel
私には、after_createのsave_corresponding_userを置くのが問題になるようです。ユーザーが再び登録するとどうなりますか?新しいユーザーオブジェクトを作成する必要はありません。また、登録テーブルにおそらくuser_id列がありませんか?それは上記のあなたのコードには入れられません。私の場合は、エラーが発生した場合に両方のロールバックを処理するトランザクションで、登録とユーザーの作成をラップします。 –