Мне нужна помощь в устранении проблемы ниже.
У меня были блоки транзакций в моем коде рельсов, как показано ниже:
@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
. Как вы можете видеть из моего кода, я передаю идентификатор. тогда почему рельсы не принимают это? всегда ли он включает свой собственный последовательный идентификатор? я не могу перезаписать магии рельсов по умолчанию? и если он это делает ... он не смотрит на данные, которые уже находятся в БД ??
Я действительно застрял здесь. Что я должен делать? я должен просто вернуться к блоку транзакций