我正在尝试将两个模型保存到数据库中。
用户和董事会。
我在控制器中执行以下操作:
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
除非保存用户,否则我不希望保存电路板的记录。我已阅读有关交易并尝试过但记录仍然保存。
如何阻止此重复发生?
提前谢谢
答案 0 :(得分:0)
所以你必须先保存用户,然后保存板对象。并使用代表逻辑AND的&&
运算符。
if @user.save && @board.save
...
end