简要介绍一下我们的结构。我们使用Trailblazer Framework在服务器端使用Ruby on Rails。在客户端Ember和Ember Engines。
现在我们遇到了一些问题,即某些模型位于父亲身上,即实际的Ember应用程序和引擎中的某些模型。现在,引擎中的模型仍然与父模型中的模型有关系。如果我现在想要更新此模型中的数据,那么引擎模型的效果非常好,对于关系(在父亲中),他总是进行INSERT而不是UPDATE。当然,条目已存在的错误。
ActiveRecord :: RecordNotUnique - PG :: UniqueViolation:错误:重复 键值违反唯一约束“contacts_pkey”DETAIL:键 (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"}}}
答案 0 :(得分:0)
我找到了解决方案。在行动中,这个缺失了:
public def set_MODELNAME(options, **)
MODELNAME = [MODELNAME].find(options['contract.default'].MODELNAME.id)
options['contract.default'].MODELNAME = MODELNAME
end