2013-07-04 1 views
4

몽고이드에서 두 모델 간의 관계에 외래 키가 명시 적으로 필요합니까? 예를 들어.외래 키 및 몽고이도

class User 
    include Mongoid::Document 
    has_many :posts 
end 

class Post 
    include Mongoid::Document 
    belongs_to :user 
    # Is this necessary below? 
    field :user_id, type: Integer 
end 

몽고이 사이트의 문서는 내가 묻는 이유를 논의 할 때 필드의 선언을 나타내지 않습니다.

답변

7

아니요, 일반적으로 별도의 외부 키 필드 선언이 필요 없습니다. Mongoid는이를 필요로하는 모든 문서에 암시 적으로 user_id 필드를 만듭니다. ActiveRecord와 동일한 외래 키 명명 규칙을 따릅니다.

해당 규칙이 모델에 적합하지 않은 경우 (예 : 동일한 클래스에 대해 두 개의 연관이있는 경우) 외래 키 이름을 무시할 수 있습니다. 예 :

belongs_to :user, foreign_key: :friend_id 

다시 이것은 ActiveRecord와 거의 같습니다 (물론 마이그레이션은 필요 없습니다).

0

모델 region.rb :

class Region 
    ... 
    field :title 
    has_many :users 
    ... 

모델 user.rb :

: 예를 들어, user.reg을 다음과 같이

class User 
    ... 
    belongs_to :reg, class_name: "Region", foreign_key: :reg_id 
    ... 

이제 user에 대한 region을 사용할 수 있습니다 10