Rails – 如何在searchkick中为filter添加更多字段?

在rails中,我使用searchkick gem进行搜索。 当我为where子句添加更多字段时,返回零结果。

实际上搜索正在下面的方法(User.rb),

 searchkick word_start: [:name] def initialize(name, limit = User::SUGGESTION_LIMIT, page = nil) @name = name @limit = limit @page = page @per_page = limit.to_i end query = { match: :word_start, fields: [{ emails: "exact" }, "name^5"], misspellings: { prefix_length: 2 }, load: false } User.search(name, query).records 

当我添加条件时,如where: {active: false, inactive: true, deleted_at: nil}它不返回任何数据。

 query = { match: :word_start, where: {active: false, inactive: true, deleted_at: nil}, fields: [{ emails: "exact"}, "name^5"], misspellings: { prefix_length: 2 }, load: false } 

上面的条件有什么错误吗? 请帮我解决这个问题。 我是第一次使用这个gem。

实际上, where子句中使用的字段的索引方式不同。 您必须将这些字段定义为filterable

 searchkick word_start: [:name], filterable: [:active, :inactive, :deleted_at] 

这应该工作。

顺便说一句:您不需要“活动”和“非活动”属性。 如果“active”属性为false,则表示它处于非活动状态。