【发布时间】:2015-12-22 21:41:37
【问题描述】:
我的注册表复杂而脆弱。我正在尝试使用事务,但它似乎不像我认为的那样工作。
我的目的是在出现故障时回滚所有保存。我这样做不正确吗?
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
【问题讨论】:
-
我认为最好从用户那里获取您需要的所有信息,对其进行验证,然后再保存。
标签: ruby-on-rails transactions