깊이 중첩 된 형태를 구현하는 프로젝트에서 레일 4.0과 함께 고치를 사용하고 싶습니다. 나는 사람이나 조직과 연관 될 수있는 파티 모델을 가지고있다. (단순함을 위해 여기에 포함되지 않기 때문에 파티는 기본 키를 가진다.)깊게 중첩 된 형태의 고치
각 당사자는 복수 postal_addresses
, telecommunications_numbers
및 electronic_addresses
을 가질 수 있어야합니다.
이들 각각
는그 때문에 여러 명과
사이에 공유 할 수 있습니다 :party
has many communication_mechanisms :through => party_contact_mechanisms
party_contact_mechanism
belongs_to party
및 belongs_to contact_mechanism
contact_mechanism
has_many electronic_addresses
, has_many telecommunications_numbers
및 has_many postal_addresses
(에만이 포함되어 electronic_addresses 전의 충분하고 샘플 응용 프로그램에서)
(의 각 인스턴스는 electronic_address
, postal_address
또는 telecommunications_number
중 하나만 있어야합니다. has_man
Y의 관계는 테스트를 위해 선택되었다과 중첩 작업하면 나중에 변경됩니다)
는 내가 구현하려는 것은 나는 가능한 한 작은 번의 클릭으로 여러 contact_mechanisms
을 추가 할 수있는 중첩 된 형태이다.
그래서 나는 전자 메일 링크, 우편 링크 및 전화 링크가 있어야한다. 따라서 전자 메일의 경우 contact_mechanisms
양식에 포장 된 electronic_addresses
에 대한 동적 양식을 party_contact_mechanisms
에 대한 양식으로 추가하려면 누에 고치 링크가 있어야합니다. 그런 식으로 양식을 제출할 때 모든 관계가 자동으로 설정됩니다. 해당 설정 (파티 # 새 이메일 버튼)을 사용하면 party_contact_mechanism
에 연결된 contact_mechanims
에 연결된 electronic_address
을 만들지 못하는 다음 params_hash가 제출됩니다. 생성 체인은 party_contact_mechanims
에서 중단되며 party_id
으로 생성되지만 contact_mechanism_id
은 생성되지 않습니다.
Parameters: {"utf8"=>"✓", "authenticity_token"=>"pyT1zgKlRBJgtBC/LGCNEaOcsPZxlmc5zEO3xd/THlg=", "party"=>{"party_contact_mechanisms_attributes"=>{"1373896051610"=>{"from_date(1i)"=>"2013", "from_date(2i)"=>"7", "from_date(3i)"=>"15", "thru_date(1i)"=>"2013", "thru_date(2i)"=>"7", "thru_date(3i)"=>"15", "contact_mechanisms"=>{"electronic_addresses"=>{"electronic_address_string"=>"[email protected]"}}}}}, "commit"=>"Save"}
그것은 구축되지 않는 contact_mechanism
및 electronic_address
의 인스턴스와 할당 된 값을 보인다. 그래서 party_contact_mechanism
에 대한 양식을 삽입하고 중첩 된 contact_mechanims
과 electronic_address
을 인스턴스화하는 방법이 필요합니다.
이 양식을 구현하는 두 번째 가능성은 belongs_to 관계 (https://github.com/nathanvda/cocoon/wiki/A-guide-to-doing-nested-model-forms#the-look-up-or-create-belongs_to)에 대한 누에 고치 예제를 따르며 "PCM"단추를 사용하여 테스트 할 수 있습니다. 이 방법을 사용하면 먼저 party_contact_mechanism
양식을 추가하고 기존 contact_mechanism
을 선택하거나 다시 클릭하여 contact_mechanism
을 새로 만듭니다.
그러나 contact_mechanism
에 중첩 된 양식을 추가하는 링크는 표시되지 않습니다.
나는 검토를 위해 GitHub의에 샘플 응용 프로그램이 있습니다
Sample application for this question
가장이 데이터 모델을 구현하는 방법에 어떤 도움
가 대단히 감사합니다.