不等于(ne)和OR未在Mongomapper范围内返回正确的结果

时间:2012-05-08 14:42:40

标签: ruby mongodb model scope mongomapper

我无法使用OR:

在Mongomapper中将这两个范围链接在一起
scope :comment_is_nil, where(:comment => nil)
scope :post_not_blank, where(:post.ne => "")

它应返回注释不为nil的模型对象,或者帖子不为空。

这不起作用:

Model.where("$or" => [{:comment_is_nil, :post_not_blank])

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

链接范围是操作,因此M.comment_is_nil.post_not_blank无法正常工作。 MongoDB's or syntax看起来像这样:

Model.where(
    :$or => [
        { :comment => nil },
        { :post.ne => ''  }
    ]
)

因此,您需要通过手动扩展范围来为其提供一系列单独的条件。