首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails -使用模型方法过滤Searchkick结果

Rails -使用模型方法过滤Searchkick结果
EN

Stack Overflow用户
提问于 2015-03-07 12:27:21
回答 1查看 643关注 0票数 3

我在一个Rails电子商务项目中使用了Searchkick。用户可以搜索产品列表。

我有一些条件,在某些情况下,某些产品不会显示在网站上(例如,如果库存= 0等)。

基于searchkick文档,我在控制器中的搜索方法是@listings = Listing.search(params[:search])。这可以达到预期的效果。

在我的清单模型中,我使用下面的方法来定义哪些清单可以显示。

代码语言:javascript
复制
class Listing < ActiveRecord::Base

    scope :listable, -> { 
    joins("INNER JOIN users
           ON users.id = listings.user_id
           AND users.hidelistings = 'f'") }

    def self.not_expired 
        listable.where('(listings.updated_at >= ? or user_id = ?) and inventory > ?', Date.current - 30.day, 24, 0)
    end

基于以上内容,我希望我的searchkick方法为@listings = Listing.not_expired.search(params[:search]),但这不起作用。如何告诉searchkick只显示符合条件的结果?

EN

回答 1

Stack Overflow用户

发布于 2019-01-16 00:32:49

我也面临着同样的问题。最后,必须添加相关字段,并将过滤逻辑包含到Searchkick查询中。

然而,这真的很好。因为它超级快,只需使用弹性搜索进行搜索即可。否则,当数据变得很大时,在两个服务器上运行两个查询是不必要的开销。

在我的第一个解决方案中,我手动提取了过滤后的id,并将其传递给elasticsearch where子句,我们遇到了很多问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28911364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档