我试图将两个模型保存到数据库。重复输入错误
用户和董事会。
我在控制器中的以下内容:
if params_posted?(:user)
@user = User.new(params[:user].merge :password => generate_random_string)
@board = Board.new(params[:board])
@spec = Spec.new(:birthdate => params[:user][:deliver_on])
@user.spec = @spec
@pref = Pref.new
@board.pref = @pref
if @board.save & @user.save
.
.
.
end
如果信息丢失的董事会仍然得到保存,似乎用户。该表单显示正确的错误消息,要求用户更正丢失或无效的信息。
现在,当表单提交一次我得到了以下错误:
mysql::Error: Duplicate entry '1000' for key 'PRIMARY': INSERT INTO `boards
我不想为要保存的电路板,除非用户保存记录。我已阅读有关交易并尝试过,但该记录仍保存。
如何防止发生这种重复?
预先感谢您
显示您的表单代码和控制器代码。看起来你是在手动设置ID – fl00r 2011-03-10 12:08:51
我不是一个Ruby on Rails程序员,但是,一般来说,你不能保存用户,确保没有失败(检查错误或你有什么)然后保存电路板? – 2011-03-10 12:10:49
是的,它是fl00r。我运行代码来比较几秒钟内保存的电路板以捕获多次提交的表单。所以我设置了id来匹配刚刚保存的板子。 – chell 2011-03-10 12:42:24