2011-08-10 11 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 

やブログのモデルを:

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

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

end 

だから、基本的に、私はそれのブログを参照するオブジェクトIDを保存するためにユーザーをしたいと思います現在編集/投稿中です。私はアクティブなユーザーについて知るためにブログを必要としません。

これを行う正規の方法のように思えるのは、ユーザーの「belongs_to」とブログの「has_many」を使用することです。これはうまくいきますが、実際には2つのモデルの関係を意味的に表現していないので理想的ではありません。

私はモンゴイドを新しくしており、より良い答えを見つけることができませんでした。このタイプの関連性を設定するためのより良い方法はありますか?

ありがとうございます!

答えて

5

あなたもブログの側にも、アクセサactive_userを作成したくない場合は、あなたが持つことができます。一方のhas_manyの/にhas_oneとbelongs_toのオン

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

は、私には完全に罰金です。ブログにuser_idsを保存することはできません。あなたがブログの側からアクセサを使用するべきであると判断しない限り、アクティブなユーザについて知る必要はありません。

+0

これはまだ私が望むようなモデル間の関係を実際に表現していません(ユーザーはBlogに属しているとは限りませんが)。英語のように読む。 – Charles

+1

あなたがそれの音が好きなら、 'belongs_to'を' referenced_in'に置き換えることができます:) – rubish

+0

Woot!これはちょうど私に多くの苦痛を救った! – Daniel