gpt4 book ai didi

ruby-on-rails - Rails - 使用模型方法过滤 Searchkick 结果

转载 作者:行者123 更新时间:2023-12-04 06:24:56 25 4
gpt4 key购买 nike

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

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

根据 searchkick 文档,我在 Controller 中的搜索方法为 @listings = Listing.search(params[:search])。这按预期工作。

在我的列表模型中,我有以下方法定义哪些列表可以显示。

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 只显示符合条件的结果?

最佳答案

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

不过,这真的很好。因为它非常快,只需使用 Elasticsearch 进行搜索。否则,当数据变大时,在两个服务器上运行两个查询是不必要的开销。

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

关于ruby-on-rails - Rails - 使用模型方法过滤 Searchkick 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com