複雑な条件とモンゴマッパーの関連付けをセットアップする方法は?

StackOverflow https://stackoverflow.com/questions/3464119

  •  27-09-2019
  •  | 
  •  

質問

MongoのDocument Subkeyインデックスを活用する協会をまとめようとしています。たとえば、2つのコレクション、投稿とトピックがあります。投稿にはタグキーがあります。これは、投稿のインデックス付きタグセットです - かなりバニラです。私がやりたいのは、私のトピックモデルに何かを持っていることです。

class Topic
  key :name, String
  many :posts, :query_conditions => {:tag => lambda {|i| i.name} }
end

「mongomapper」という名前のトピックがあるという考えは、 @topic.postsを呼び出すとき、協会が次のことを実行したいということです。

post.find({tag: "mongomapper"})

ARのFinder_SQLオプションのようなもの(クエリに1回の値を補間する機能を備えている)のようなものが効果的に必要です。これはまだMM Associationオプションで見つけることができませんでした。そのようなものは存在しますか?

役に立ちましたか?

解決

MM内部を掘り下げた後、私はこれが起こらないと判断しました。具体的には、has_manyの関連付けは常にa:foreign_key => proxy_owner._id queryに追加されます。その基準が追加されるのを避ける方法はありません。つまり、カスタムファインダーとの関連付けを設定できません。

私は自分の投稿モデルで名前付きスコープとトピックモデルにヘルパーメソッドを使用しました。

class Post
  scope :tagged, lambda {|tag| where(:tags => tag)}
end

class Topic
  def posts
    Post.tagged(name.downcase)
  end
end

これにより、クエリプロキシが返されるため、すべての意図と目的のために、読み取り専用の目的のための協会のように扱うことができます。十分に機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top