複雑な条件とモンゴマッパーの関連付けをセットアップする方法は?
-
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
これにより、クエリプロキシが返されるため、すべての意図と目的のために、読み取り専用の目的のための協会のように扱うことができます。十分に機能します。
所属していません StackOverflow