我有一个FormObject
注册,它在方法中为他创建了一个用户和很多模型create
。
def create
ActiveRecord::Base.transaction do
@user = User.create(@params[:user])
process_bonuses_for_user
process_actions_for_user
# et.c., giant amount of methods
end
@user.persisted? # to return the true of false to controller
end
我遇到了我的奇怪行为FormObject
。即使它运行成功(创建很多模型)或不成功(不保存它们),id
模型User
也是自动递增的。因此,每次尝试使用我的FormObject
增量来保存id
用户的 next 值。创建成功时这是正常情况User
,但如果用户在注册表单上填写错误则不正常。
如何禁用这种不可预测的行为?
PS我知道当我在方法@user = User.new(@params[:user])
的开头和结尾编写时一切正常,但是有很多关联,我不想在我的模型中写很多或。create
@user.save
autosave
inverse_of
PPS 我是postgresql-9.4
用户