Моя регистрационная форма сложная и хрупкая. Я пытаюсь использовать транзакцию, но, похоже, она работает не так, как я думаю.Использование транзакции для отката сохраняет
Мое намерение состоит в том, чтобы откатить все сохраненные данные, если что-то не сработает. Я делаю это неправильно?
if @little_class_schedule.valid?
User.transaction do
if @user.save
@little_class.user_id = @user.id
if @little_class.save
if @location.save
if little_class_schedule_form_params["schedule_type"].to_i == 2 || @little_class_schedule.save
if @little_class_session_validation.valid?
sessions.each do |s|
if s.save
next
else
raise ActiveRecord::Rollback
render 'class_account_registration/new'
end
end
ApprovalMailer.request_approval(@user, @little_class).deliver
redirect_to dashboard_path, notice: 'Success!'
else
raise ActiveRecord::Rollback
render 'class_account_registration/new'
end
else
raise ActiveRecord::Rollback
render 'class_account_registration/new'
end
else
raise ActiveRecord::Rollback
render 'class_account_registration/new'
end
else
raise ActiveRecord::Rollback
render 'class_account_registration/new'
end
else
render 'class_account_registration/new'
end
end
else
render 'class_account_registration/new'
end
Я думаю, что лучше получить всю необходимую информацию от пользователя, проверить ее и только после этого сохранить. –