2012-10-03 2 views
1

몽고이 (Mongoid)가 어떻게 정렬하는지 이해하려고 할 때 몇 가지 문제가 있습니다. 나는 2 가지 모델 인 Gig와 Venue를 가지고 있으며, 둘 다 belongs_to has_many 관계에 의해 연관되어있다.연결된 모델의 속성을 통해 몽고드 객체 정렬

Ven 객체의 'name'속성으로 Gig에서 객체를 정렬하지 않으려 고합니다.

나는 누군가가 나와 올바른 방향으로 나를 가리킬 수 있기를 바라고 있습니다.

다음은 잘린 모델 설명입니다.

내 쿼리는 다음과 같습니다 : 당신은 몽고에 가입 할 수 없습니다

# Gig Model 
class Gig 
    include Mongoid::Document 
    include Mongoid::Paperclip 
    include SearchMagic 

    belongs_to :owner, :class_name => "User", :inverse_of => :owns 
    belongs_to :venue 

    has_and_belongs_to_many :attenders, :class_name => "User", :inverse_of => :attending 

    has_and_belongs_to_many :artistes 

<snip> 
end 

# Venue Model 
class Venue 
    include Mongoid::Document 
    include Mongoid::Paperclip 
    include SearchMagic 

    has_many :gigs 
    field :foursquare_id, type: String 
    embeds_one :address 
    embeds_many :user_ratings 

    field :facebook, type: String 
    field :twitter, type: String 
    field :website, type: String 
    field :name, type: String 
    field :postal, type: String 
    field :tel, type: String 
    field :venue_type, type: String 
    field :description, type: String 
    field :rating, type: Float, default: 0.0 

<snip> 
end 


# Console 

>> Gig.desc('venue.name').map{|f| f.venue.name}            
=> ["*SCAPE", "Velvet Underground", "Blujaz Lounge", "Velvet Underground", "Home Club", "Wh 
ite House, Emily Hill", "Zouk", "Zouk", "The Pigeonhole", "Home Club", "Home Club", "Home C 
lub"] 

# sorting doesn't work 

답변

0

. 조인이 필요한 경우 관계형 데이터베이스를 사용하십시오. 비 관계형 데이터베이스의 "기능"은 조인을 할 수 없다는 것입니다.

당신은 기본적으로 두 가지 선택이있다 :

추가 필드와 공연에 장소의 이름을 주입하는 before_save 콜백,

  • -지도에서 (예를 https://github.com/rewritten/timebank/blob/master/lib/mongoid/denormalize.rb 참조)

    1. 작업을 줄이면 어떤 장소 나 공연을 수정 한 후 공연장 이름을 공연장으로 추가 필드로 업데이트 할 수 있습니다.

    마지막으로 주문하려면 Gig 컬렉션에 입력란이 필요합니다.

  • 관련 문제