2010-04-25 50 views
0

我需要一些帮助解决以下问题。 我有交易块,我的Rails代码象下面这样:需要帮助修复导轨中的唯一键。导轨添加ID导致重复的键

@sqlcontact = "INSERT INTO contacts (id,\"cid\", \"hphone\", mphone, provider, cemail, email, sms , mail, phone) VALUES ('"[email protected]+"','" + @id1 + "', '"+ params[:hphone] + "', '"+params[:mphone]+ "', '" + params[:provider] + "', '" + params[:cemail]+ "', '" +  @varemail+ "', '"[email protected]+ "', '"+ @varmail+"', '"[email protected]+"')" 

我的应用程序部署到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 

我的应用程序也已存储数据。

现在的问题是,当我尝试保存记录...我不断收到错误:

duplicate key value violates unique constraint "contacts_pkey"

错误也显示了SQL查询试图插入数据......然而,在sql查询我看不到id的值。正如你可以从我的代码中看到的那样,我正在传递id。那么为什么Rails不接受它?它是否总是包含它自己的顺序ID?我能不能覆盖默认的导轨魔法?如果它这样做......是不是看数据已经在数据库??

我真的被困在这里。我该怎么办?我应该回到我的交易区块

回答

0

您正在为您手动分配您的ID:您不应该那样做,您的数据库管理员将为您执行此操作。