我正在尝试整合一个利用Mongo文档子键索引的关联。例如,我有两个集合,帖子和主题。帖子有一个标签键,这是一个用于后期漂亮香草的索引标签集。我想做的是,在我的Topic模型中有一些东西,如:
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选项(能够将每个实例值插入到查询中),我还没有在MM关联选项中找到它。这样的事情存在吗?
答案 0 :(得分:3)
在深入了解MM内部后,我认为这不会发生。具体来说,has_many关联总是受到:foreign_key =>的约束。 proxy_owner._id除查询外;没有办法避免添加标准,这意味着您无法设置与自定义查找器的关联。
我刚在Post模型上使用了命名范围,在Topic模型上使用了辅助方法。
class Post
scope :tagged, lambda {|tag| where(:tags => tag)}
end
class Topic
def posts
Post.tagged(name.downcase)
end
end
返回一个查询代理,因此对于所有意图和目的,我可以将其视为一个只读目的的关联。效果很好。