2011-08-10 3 views
2

몽고이드에서 편도 참조를 할 수 있습니까?몽고이드 - 편도 참조

class User 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    has_many :blogs, :class_name => "Blog", :inverse_of => :editor 
    has_one :active_blog, :class_name => "Blog", :inverse_of => :active_users 
end 

및 블로그 모델 :

내가 좋아하는 일을 수행하고자하는 블로그를 참조하는 개체 ID를 저장하는 그래서, 기본적으로, 내가 사용하고 싶습니다

class Blog 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    belongs_to :editor, :class_name => "User", :inverse_of => :blogs 

end 

을 그 그것을 현재 편집/게시 중입니다. 나는 블로그가 활성 사용자에 대해 알 필요가 없으며, 다른 방법으로 만 알 수 있습니다.

사용자에게 'belongs_to'를 사용하고 블로그에는 'has_many'를 사용하는 것이 표준적인 방법처럼 보입니다. 이것은 효과가 있지만 실제로는 두 모델 간의 관계를 의미 론적으로 나타내지 않으므로 이상적이지 않습니다.

저는 몽고 이드를 처음 접했고 더 나은 답변을 찾을 수 없었습니다. 이러한 유형의 관련성을 설정하는 더 좋은 방법이 있습니까?

감사 톤! 반면 has_many/has_one에

class User 
    belongs_to :active_blog, :class_name => "Blog", :inverse_of => nil 
end 

및 belongs_to 나에게 완벽하게 잘 보인다 : 당신도 블로그면에 접근 active_user을 만들지 않으려면

답변

5

, 당신은 할 수 있습니다. 블로그에 user_ids를 저장하지 않으며 블로그가 블로그 측에서 접근자를 사용해야한다고 결정하지 않는 한 활성 사용자에 대해 알 필요가 없습니다.

+0

고마워요,이 모델은 여전히 ​​관계를 표현하지 않습니다. (사용자는 블로그에 속한 것이 아닙니다.)하지만 내 코드를 항상 기대할 수는 없습니다. 영어처럼 읽으십시오. – Charles

+1

더 나은 사운드를 원한다면'belongs_to'를'referenced_in'로 대체 할 수 있습니다 :) – rubish

+0

Woot! 이것은 방금 저에게 많은 고통을 덜어주었습니다! – Daniel

관련 문제