2012-02-08 5 views
0

私はMongoで動作するカスタムリレーションシップ名を取得しようとしています。カスタムレール/マングイード関係名が動作しない

"コラージュ"は、作業IDであるBSONフィールドで満たされたBSONドキュメントです。

Collage.create(slide_one: client.work.first.id, slide_two: client.work.second.id, slide_three: client.work.third.id) 

このように、コラージュは作業IDでいっぱいのモンゴルレコードです。 @ collage.work_oneまたは@ collage.slide_one.work_one、@ collage.slide_one.workを書いて、自分が望む仕事に到達したいと考えています。

これらの関連付けをカスタムで命名することは無駄です。これまでのところ、私は2つのことを試しました:

これはmongoのウェブサイトでこれを行うと言われていますが、私がセットアップして@collage.work_one.inspectを呼び出すとnilになります。 collage.work_one.inspect @http://mongoid.org/docs/relations.html(ページの一番下)

collage.rb

has_one :work_one, class_name: 'Work', inverse_of: :slide_one 

work.rb

belongs_to :slide_one, class_name: 'Collage', inverse_of: :work_one 

文字通り

"nilを" 出力します。

私も

collage.rb

has_one :work_one, class_name: 'Work', as: :work_oneable 

work.rb

belongs_to :work_oneable 

を試してみました。しかし、それは私を与える:

uninitialized constant WorkOneable 

任意のヘルプやアイデアがはるかに高く評価!

答えて

1

あなたのクラス宣言が正しいと思います(最初のもの)。しかし、idの代わりにidの代わりに実際のオブジェクトを使用すると、次のようにフィールドを割り当てる必要があります。

Collage.create(slide_one: client.work.first, slide_two: client.work.second, slide_three: client.work.third) 

希望します。

+0

ありがとうございました!私はこのようにしていませんでしたが、後で使用するためにあなたの応答を私のメモリバンクに入れます:) – Nick

関連する問題