需要帮助修复导轨中的唯一键。 rails正在添加导致重复键的id

时间:2010-04-25 23:24:01

标签: ruby-on-rails activerecord

我需要一些帮助来解决以下问题。 我的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中的数据吗?

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

1 个答案:

答案 0 :(得分:0)

您手动分配您的:id,您不应该这样做,您的数据库管理员会为您执行此操作。