0

我正在尝试建立一个利用 Mongo 文档子键索引的关联。例如,我有两个集合,帖子和主题。帖子有一个标签键,它是帖子的一组索引标签 - 漂亮的香草。不过,我想做的是在我的主题模型中有一些东西,例如:

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 关联选项中找到它。有这样的东西存在吗?

4

1 回答 1

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

这将返回一个查询代理,因此出于所有意图和目的,我可以将其视为只读关联。工作得很好。

于 2010-08-12T02:01:50.477 回答