2011-09-24 4 views
2

레일즈를 배우려고하는데 ActiveRecord 컴포넌트를 사용하여 자체 관계를 선언하는 방법을 이해하는 데 어려움을 겪고 있습니다.Rails 3 모델에서 명명 된 관계 생성하기

나는 이런 식으로 뭔가가있는 경우 : 이름이 같은 경우

class Comment < ActiveRecord::Base 
    has_many :comments 
    belongs_to :comments 
end 

는 관련 의견 주석의 응답과 의견의 부모 인은 어떻게 그들에 액세스 할 수 하죠? 나는 단지 comment.comments을 할 수 없다. 그들은 다른 이름을 가질 필요가있다.

감사합니다.

+3

체크 아웃 [자체 조인 (HTTP : //guides.rubyonrails .org/association_basics.html # self-joins) docs이지만 댓글이 아닌'belongs_to : comment'가됩니다. :) –

답변

3

한 경우, belongs_to는 단일 결합, 그래서는 다음과 같습니다

belongs_to :comment 

... 당신은 어떤 이름 충돌이 없을 것입니다.

하지만 충돌이 할 경우에, 당신은 항상 예를 ​​들어, 관계 이름을 바꿀 수는 :

has_many :comments 
has_many :recent_comments, :class_name => 'Comment', :limit => 10, :order => 'id DESC' 

는 협회 in the docs 옵션 더 많은 예제를 참조하십시오.

0

당신은 belongs_to 연관들에 대해 단수 사용할 필요가 : 당신이 Comment s의 트리 구조를 만들려고처럼

belongs_to :comment 

것 같습니다. 너는 paginary과 같은 보석을 보길 원할지도 모른다.

0

has_many 메소드에 전달 된 첫 번째 심볼은 지정하려는 이름입니다. 레일 구성 원리를 통해 협약을 사용하므로으로 그것에서 관련 클래스의 이름을 사용하지만이처럼 지정할 수 있습니다

has_many :rel, :class_name => "Class" 
관련 문제