2013-07-18 4 views
0

회사에 자회사를 추가하려고합니다. 그래서 나는 회사에 가서 하나 이상의 자회사 목록에서 선택하고 저축 할 것이다. 따라서 자회사에 회사를 저장하는 것이 아니라 (아래 사례처럼 보임), 회사에 자회사를 추가하는 것입니다.부모와 자녀에게 재귀적인 문제가 발생합니다.

그렇다면이 예제는 나에게 아무런 의미가 없습니다. 자회사를 회사에 어떻게 저장합니까? 임 잘못가는 곳 임은 확실이 그대로

class Company < ActiveRecord::Base 
    validates :name, presence: true 
    has_many :subsidiaries, :class_name => "Company", :foreign_key => "parent_company_id" 
    belongs_to :parent_company, :class_name => "Company", 
end 

당신은 어떻게 내 컨트롤러에 보일 것이다 저장 보여주세요 수 없습니다.

현재 내 문제는 내가 임 절약 저장 끝까지의 PARENT_ID으로 자회사 있어야 그래서 basicly의 반전 : 여기

내가 목록에서 자회사를 선택

<%= f.collection_select(:parent_company_id, @companies, :id, :name, :include_blank => true, :multiple => true) %> 

그냥 명확하게하기 위해 현재 무슨 일 :

  1. 내가 기업을 열고
  2. 내가 회사 B 등을 선택 자회사 및 저장
  3. 내가 회사를보고 그 B를 참조하십시오 (잘못된!) 자회사 A가 들어 그 PARENT_ID가로 설정되어 있기 때문에 의미가 있지만, 실제로 나는 그것의 "subsidiary_id"
를 설정해야 이 일을
+0

당신은 틀린 쪽에서 이것을보고 있습니다. 각 회사는 부모의 ID를 저장합니다. 부모는 자녀 회사 목록을 저장하지 않습니다. 이것은 부모와 자녀가 같은 테이블 또는 재귀에 있다는 사실과 아무런 관련이 없습니다. – bdares

+0

그래, 그게 옳은 건가요? 저를 잘못 대변해 주거나 저를 저주하는 저요? 그러나 여전히 전화 회사 계열사는 부모가 아닌 자회사가 있어야한다고 생각합니까? – Harry

답변

0

전형적인 방법 :

<p>Parent Company</p> 
<%= f.collection_select :parent_company_id, ... %> 

당신은 모든 하위 회사 기록에 주위에 가서 자신의 부모 회사를 설정합니다. 그런 다음 @parent.subsidiaries을 살펴보십시오.

모든 모회사의 양식에서이 작업을 수행하려면, 당신은 자바 스크립트와 fields_foraccepts_nested_attributes_for 몇 가지 트릭을해야 할 것이다, 또는 어쩌면 체크 박스의 무리와 함께 - 실제로 변경되는 기록은 입니다 하위 레코드가 아니라 상위 레코드입니다.

지켜보기 this railscast 도움이 될 수 있습니다.

+0

하지만 부모가 아닌 자회사로 추가하려고합니다. – Harry

+0

좋아, 잘 했어. 이제는 부모 ID를 저장하지 않고 선택한 옵션의 상위 항목을보기에있는 모델의 ID로 설정합니다. – Harry