Обновить существующие данные модели

Коротко о нашей структуре. Мы используем Ruby on Rails на стороне сервера вместе с Trailblazer Framework. На стороне клиента Ember и Ember Engines.

Теперь у нас есть проблема, что некоторые модели лежат в отце, то есть фактическое приложение Ember и некоторые модели в движке. Теперь модели из двигателя все еще имеют отношение к моделям, которые есть в приложении отца. Если я теперь хочу обновить данные из этой модели, модель двигателя работает очень хорошо, с отношениями (которые есть в отце) он всегда делает INSERT и не ОБНОВЛЯЕТ. Конечно, есть ошибка, что запись уже существует.

ActiveRecord:: RecordNotUnique - PG:: UniqueViolation: ОШИБКА: двойное значение ключа нарушает ограничение уникальности "contacts_pkey" ДЕТАЛИ: Ключ (id)=(1) уже существует.

У кого-нибудь есть идеи, как решить проблему и обновить модель двигателя и модель отца? В Ember Store все правильно связано, и данные также правильно распределены по отношениям. На сервер приходит следующее:

Parameters: {"data"=>{"attributes"=>{"patient-number"=>1, "email"=>nil, "employer"=>"", "foreign-doctor"=>"", "family-doctor"=>"", "patient-since"=>"2017-08-02T00:00:00.000Z", "job"=>"", "lab"=>"", "last-therapy"=>"2017-08-02T00:00:00.000Z", "payment-deadline"=>28, "rating"=>1, "recall-type"=>nil, "recommended-by"=>"", "phrophylaxis-user"=>nil, "created-at"=>nil, "updated-at"=>nil, "contact-id"=>nil, "import-id"=>nil}, "relationships"=>{"contact"=>{"data"=>{"type"=>"contacts", "id"=>"1"}}, "customer"=>{"data"=>{"type"=>"customers", "id"=>"1"}}, "patient-insurances"=>{"data"=>[]}, "users"=>{"data"=>[{"type"=>"users", "id"=>"1"}]}, "person"=>{"data"=>{"type"=>"people", "id"=>"1"}}}, "type"=>"patients"}, "id"=>"1", "patient"=>{"data"=>{"attributes"=>{"patient-number"=>1, "email"=>nil, "created-at"=>nil, "updated-at"=>nil}, "relationships"=>{"contact"=>{"data"=>{"type"=>"contacts", "id"=>"1"}}, "person"=>{"data"=>{"type"=>"people", "id"=>"1"}}}, "type"=>"patients"}}}

1 ответ

Решение

Я нашел решение. В Операции этого не было:

public def set_MODELNAME(options, **)
    MODELNAME = [MODELNAME].find(options['contract.default'].MODELNAME.id)
    options['contract.default'].MODELNAME = MODELNAME
end
Другие вопросы по тегам