views:

67

answers:

1

I need some help in fixing the below issue. I had transaction blocks in my rails code like below:

@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+"')"

my app was deployed to heroku so I was advised by them to remove transaction blocks. So I changed the above to:

@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

My app also already had data stored.

Now the problem is that when I try to save a record ...I keep getting the error:

duplicate key value violates unique constraint "contacts_pkey"

The error also shows the sql query trying to insert data ...however, in that sql query i Do not see id value. As you can see from my code that I am passing the id. then why is rails not accepting it? does it always include its own sequential id? can I not overwrite the default rails magic? and if it does that...does it not look at data that is already in the DB??

I am really stuck here. What should I do? should I just go back to my transaction block

A: 

You are assigning your :id manually, you should not do that, your database manager will do that for you.

Francisco Soto