2011-06-22 8 views
2

次のモデルを想定します。MongoMapperでEmbeddedDocumentの親ドキュメントのIDを取得

class Person 
    include MongoMapper::Document 

    key :name, String 
    key :surname, String 

    many :children 
end 

class Child 
    include MongoMapper::EmbeddedDocument 

    key :name, String 
end 

プラス、(シナトラと)次のクエリ:

get 'child/:id' do 
    @child = Child.find(params[:id]) 
end 

は、その子が属するその人のIDを取得する方法はありますか?

答えて

2

私は、あなたが探していることはこれだと思う:

class Child 
    include MongoMapper::EmbeddedDocument 

    embedded_in :parent 
    key :name, String 
end 

私はあなたのクエリがどのように動作するかはかなりわからない - 私はそれがEmbeddedDocumentですので、子クラスの検索があることを見ていませんよ。ただし、

Person.where("children._id" => params[:id]).first.parent 

が動作するはずです。

+1

あなたは単に 'Person.where(" children._id "=> params [:id])という意味ではありません。 (どのbtwも 'Person.first(" children._id "=> params [:id])と略記できます) –

+0

はい - 私は正しく説明しませんでした。私は 'Person.first(" children._id "=> params [:id])を意味しました。children.first.parent == Person.first(" children._id "=> params [:id])' –

関連する問題