加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 有没有办法混合名为scopes的rails和思考sphinx

发布时间:2020-12-17 03:13:28 所属栏目:百科 来源:网络整理
导读:有没有办法混合命名范围和狮身人面像范围?我不敢相信没有. 我在课程中有狮身人面像指数.一旦用户购买课程,他们就会有一个屏幕,可以看到他们所有课程的列表.我希望他们在网站范围内的课程中执行相同的搜索,但确定他们拥有的搜索范围. 对于仅限sphinx的范围,
有没有办法混合命名范围和狮身人面像范围?我不敢相信没有.

我在课程中有狮身人面像指数.一旦用户购买课程,他们就会有一个屏幕,可以看到他们所有课程的列表.我希望他们在网站范围内的课程中执行相同的搜索,但确定他们拥有的搜索范围.

对于仅限sphinx的范围,这显然是不可能的,因为我没有索引采购数据,我认为我也不应该这样做.

有没有办法实现这个目标?

这就是我到目前为止“结合”这两个系统的原因.对我来说似乎很骇然但它有效:

lesson_ids = current_user.active_products_by_type(:lessons).collect{|x| x.id}
@lessons = Lesson.active_scope.search :with => {:id => lesson_ids }

解决方法

鉴于我不确定范围active_products_by_type和active_scope是什么(哪个是Sphinx?两者都没有?),这有点难以判断你的解决方案是否合适.

但是您无法在搜索调用上调用AR范围,因为AR范围是在内部构建的,以生成SQL查询. Sphinx有自己的查询协议,这就是Thinking Sphinx添加Sphinx范围的原因.除此之外,Sphinx在搜索时不能引用数据库(仅在索引时),因此对Sphinx看不到的数据的任何引用都没有帮助.

所有这一切,代码中可能没有任何东西可以让你将搜索调用链接到AR范围 – 你甚至可能会得到结果 – 但这是因为范围影响了Thinking Sphinx进行转换的Model.find调用将结果搜索到模型实例中.结果是,虽然您可能会看到对象,但AR范围仅应用于搜索结果的给定页面,并且分页数学(页数/总结果)将不可靠.

呃,这变成了一篇文章,但希望它有所帮助……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读