更新现有模型数据

Update existing model data

简要介绍一下我们的结构。我们在服务器端使用 Trailblazer Framework 在 Rails 上使用 Ruby。在客户端 Ember 和 Ember 引擎。

现在我们有一些模型在父亲中的问题,即实际的 Ember 应用程序和引擎中的一些模型。现在引擎中的模型仍然与父应用程序中的模型有关系。如果我现在想从这个模型更新数据,引擎模型工作得很好,与关系(在父亲中)他总是做一个插入而不是更新。当然有一个条目已经存在的错误。

ActiveRecord::RecordNotUnique - PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "contacts_pkey" DETAIL: Key (id)=(1) already exists.

有人知道如何解决问题并更新引擎模型和父模型吗?在 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"}}}

我找到了解决方案。在行动中缺少这个:

public def set_MODELNAME(options, **)
    MODELNAME = [MODELNAME].find(options['contract.default'].MODELNAME.id)
    options['contract.default'].MODELNAME = MODELNAME
end