【问题标题】:Mongoid Scopes: gain access to limit and skip within scopeMongoid Scopes:访问范围内的限制和跳过
【发布时间】:2012-12-23 13:53:46
【问题描述】:

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

我想在我的 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)

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

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

【问题讨论】:

    标签: ruby-on-rails ruby scope mongoid


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-08-19
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多