- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个基于 thinking-sphinx 的带有搜索结果的 Controller 。 find_kind_cd
和 find_category_ids
都是 sphinx 作用域。
@products.search
返回一个数组。我需要像 ActiveRecord::Relation 或类似的东西,因为我想为它实现一些方法,比如 includes
或 maximum
。我怎样才能用数组实现这个方法?
@products = Product.find_kind_cd(Product.product)
@category = Category.find_by(id: params[:category])
@products = @products.find_category_ids(@category.subtree_ids) if @category
@products = @products.search(params[:query]) if params[:query].present?
# TODO includes - bullet gem
@products = @products.page(params[:page]).per(params[:per] || 12)
最佳答案
搜索结果不能是 ActiveRecord::Relation
,因为您查询的是 Sphinx,而不是数据库。您实际返回的不是数组,而是 ThinkingSphinx::Search
的一个实例,它的行为与数组非常相似。
但是,搜索调用是延迟计算的,page
和 per
是 ThinkingSphinx::Search
上可用的方法,因此您可以使用那些。对于 includes
,您需要改为执行以下操作:
@products = @products.search(:sql => {:include => :category})
虽然没有什么比maximum
更好的了。但是,如果您确实希望根据 Sphinx 搜索结果从数据库中进行聚合,那么这应该可以解决问题:
Product.where(id: Product.search_for_ids(params[:query]).to_a).maximum(:cost)
关于ruby-on-rails - thinking_sphinx 返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110223/
Similar Stack Overflow Question 我希望用户能够通过我的 thinking_sphinx 文本框搜索 wood 之类的词,然后将其拉出 Wooden 和 Woodwork
我有一个基于 thinking-sphinx 的带有搜索结果的 Controller 。 find_kind_cd 和 find_category_ids 都是 sphinx 作用域。 @produc
Ubuntu 14.04 安装,带有 nginx、passenger 和 postgresql。运行以下步骤: sudo apt-get update && sudo apt-get upgrade
我正在使用 thinking_sphinx 并且正在对模型进行增量索引。 delta 索引有效,但有一个小错误。当我创建一个新产品时,它是 index.html 。但是,当我更新该产品时,它不会立即获
过去,我在 Rails 2.3 中使用了 thinking_sphinx,我发现它没有问题。是否值得考虑新的搜索选项? searchlogic 和 thinking_sphinx 之间有什么区别? R
我已经用 thinking_sphinx gem 更新了我的搜索字段记录并且我已经配置了它。它工作正常但有问题,它只显示默认的 20 条记录。如何更改这些内容以使更多记录在 View 中可见.. 最佳
我正在从thinking_sphinx ~2.5 升级到3.0.3 以遵循heroku 附加组件flying_sphinx 的设置说明。升级可能根本没有必要,但现在我正在升级,所以不妨完成它。 当我尝
我是一名优秀的程序员,十分优秀!