我在 Rails 电子商务项目中使用 Searchkick。用户可以搜索产品列表。
在某些情况下,某些产品不会显示在网站上(例如,如果库存 = 0 等)。
根据 searchkick 文档,我在控制器中的搜索方法为@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 只显示符合条件的结果?