我需要一些帮助来解决以下问题。 我的rails代码中有事务块,如下所示:
@sqlcontact = "INSERT INTO contacts (id,\"cid\", \"hphone\", mphone, provider, cemail, email, sms , mail, phone) VALUES ('"+@id1+"','" + @id1 + "', '"+ params[:hphone] + "', '"+params[:mphone]+ "', '" + params[:provider] + "', '" + params[:cemail]+ "', '" + @varemail+ "', '"+@varsms+ "', '"+ @varmail+"', '"+@varphone+"')"
我的应用程序已部署到heroku,因此我建议他们删除事务块。所以我把上面改为:
@cont = Contact.new(:id => @id1, :cid => @id1, :hphone => params[:hphone], :mphone => params[:mphone], :provider => params[:provider], :cemail => params[:cemail], :email => @varemail, :sms => @varsms, :mail => @varmail, :phone => @varphone)
@cont.save
我的应用也已经存储了数据。
现在的问题是,当我尝试保存记录时...我一直收到错误:
重复键值违反唯一 约束“contacts_pkey”
该错误还显示sql查询尝试插入数据...但是,在该sql查询中我没有看到id
值。从我的代码中我可以看到我传递了id。那为什么rails不接受呢?它总是包含自己的顺序ID吗?我可以不覆盖默认的rails魔法吗?如果它这样做......它不会查看已经在DB中的数据吗?
我真的被困在这里了。我该怎么办?我应该回到我的交易区块
答案 0 :(得分:0)
您手动分配您的:id,您不应该这样做,您的数据库管理员会为您执行此操作。