2012-05-13 5 views
0

다음 인스턴스에서 Chlid 클래스의 belongs_to : mother 및 has_one : mother 사용의 차이점은 무엇입니까? 나는 이것에 대한 Rails 문서를 읽었으며, 어느 것이 든 그것을 읽는 것과 관련된 의미와 다른 점을 알 수는 없다.ruby ​​on Rails belongs_to 대 has_one 연관 - 명확화 요청

다양한 연결에서 각 클래스에 추가 메서드를 추가하지만 연관성을 나열하는 문서를 메서드가 무엇인지, 무엇을하고 있는지 찾을 수 없었습니다.

class BiologicalMother < ActiveRecord::Base 
    has_many :children 
end 

class Child < ActiveRecord::Base 
    belongs_to :biological_mother 
end 
+0

"belongs_to 및 has_one 선택"에 대한 공식 문서는 다음과 같습니다. http://guides.rubyonrails.org/association_basics.html#choosing-between-belongs-to-and-has-one 그것은 다음과 같습니다. 구별은 외래 키를 놓는 위치입니다 (belongs_to 연관을 선언하는 클래스의 테이블에 있습니다). " –

답변

0

귀하의 경우 has_manybelongs_to은 의미 론적 방법이 아니라 레일 작동 방식에 대한 올바른 접근 방식입니다. 외래 키는 항상 연관의 belongs_to 부분에 저장됩니다. 유효한 has_one 시나리오는 Purchase 모델 has_oneBillingAddress 인 것일 수 있습니다.

예 : belongs_to 부분은 항상 외부 키를 보유하고 있기 때문에

class Purchase 
    has_one :billing_address 
end 

class BillingAddress 
    belongs_to :purchase #this holds the foreign key - purchase_id 
end 

귀하의 경우에 대해서는, 당신은 협회의 다른 측면에 한쪽 has_onehas_many를 사용하지 못할.

이 기능이 작동하는지 알려주세요.

+0

그것은 내가 이해하는데 도움이되는 설명이었습니다. 특히 상대 모델에 has_one과 has_many를 사용할 수 없었습니다. [그것이 낙심하는 것 같았지만, 나는 왜 그런지 몰랐다.] 감사! – bdx

0

이 시점에서 거의 순전히 의미론입니다. mongoid를 사용하면 외래 키가 belongs_to이라는 모델에 저장되어 있으므로 ActiveRecord에서도 외래 키가있을 수 있습니다.

관련 문제