Mongoid Scopes:获得限制和跳过范围内的访问权限

时间:2012-12-23 13:53:47

标签: ruby-on-rails ruby scope mongoid

我的问题基本上是这样的:

我想在我的Document模型中添加一个带参数search(query)的命名范围,以便能够使用Sphinx和Riddle搜索文档:

class Document
    ...
  @@riddle=Riddle::Client.new

  scope :search, ->(query){
    where(:document_id.in => sphinx_get_ids(query))
  }

  def self.sphinx_get_ids(query)
    @@riddle.query(query)[:matches].collect {|match| match[:attributes]["doc_id"]}
  end

end

不介意类变量。

我想在查询命中索引之前设置谜语客户端的offsetlimit参数(显然是出于性能原因),但我不能从范围块中指定这些选项,因为它们是类等级,并且,可能尚未初始化,例如在Kaminari的示例中:

Document.search('graceful aubergine').page(5).per(10)

这种方法对我来说似乎很漂亮,但我仍然无法找到实现它的方法。

有没有办法在查询实例化之前创建一个将在实例级别调用的范围方法?

1 个答案:

答案 0 :(得分:0)

事实证明,目前版本的Mongoid和开发中的版本是不可能的:

https://github.com/mongoid/mongoid/issues/2652