저장된 개체 배열 Person
에 저장하지 않은 ActiveRecord 개체 Thing
을 적용하려고합니다.지연된 작업 : 저장되지 않은 ActiveRecord 개체를 다른 것으로 적용하십시오.
person has_many :things
그러나 지연된 작업은 저장되지 않은 ActiveRecord 모델과 작동하지 않습니다.
DJ isn't intended to work with unsaved ActiveRecord models.
... 그래서 오류를 해결하기 수 없습니다 :
{ActiveRecord::RecordNotFound, class: Thing , primary key:
를 내가 얻을 수있는 몇 가지 전략을 중심으로 발로 봤는데 나는 그들이 나에게 말했다 때문에 알고 주위 :
1) self.yaml_new를 here에서 재정의하십시오. 끔찍한 생각처럼 들리네.
2) Thing.find
을 복구 할 수 없도록 설정하고 저장되지 않은 물체 만 수분을 보충하십시오. # 1보다 더 나쁜 생각입니다.
3) Thing
을 먼저 db에 저장하십시오. 우리가 작업을 정리해야하는 db에 고아 Thing
이있을 것이므로 (Thing
은 실제로는 Person
이 첨부되지 않고 존재하지 않음), 작업 호출자는 Thing
을 먼저 저장해야한다는 것을 알고 있어야합니다. Person
에 대한 유효성 검사를 무시해야합니다. 끔찍해.
4) DJ 직렬화를 위해 OpenStruct에 AR 세부 정보를 덤프 할 Thing.to_open_struct
메서드를 만듭니다. 지저분 해. 이 방법을 모든 마이그레이션과 동기화하여 유지해야합니다. 이상적은 아니지만 내가 가지고있는 최고입니다.
아이디어가 있으십니까? 저장하지 않은 DJ를 직렬로 설정하지 않았습니다. Thing
그냥 깨끗한 솔루션을 원합니다.
Re : "왜 먼저 저장할 수 없습니까?" 나는 더 이상 질문을 혼란스럽게하고 싶지 않았다. 우리가 할 수 없다고 그냥 말하자. 다른 모델에 대한 아이디어에 감사드립니다. 나쁘지 않다. 나는 그것에 대해 조금 생각할 것이다. – gmoore