Ruby on rails 4 如何根据某些条件使用searchkick进行索引
我正在使用searchkick和rails4 我有一个activerecord人物,具有属性a、b、c。只有当b等于“type1”时,我如何才能建立索引,否则就不能建立索引 目前我知道的是Ruby on rails 4 如何根据某些条件使用searchkick进行索引,ruby-on-rails-4,searchkick,Ruby On Rails 4,Searchkick,我正在使用searchkick和rails4 我有一个activerecord人物,具有属性a、b、c。只有当b等于“type1”时,我如何才能建立索引,否则就不能建立索引 目前我知道的是 def search_data { a:a, b:b, c:c, } end 根据: 默认情况下,所有记录都编制了索引。要控制哪些记录被编入索引,请将should\u index?方法与search\u import范围一起使用 这应该适用于您的情况: class Peopl
def search_data
{
a:a,
b:b,
c:c,
}
end
根据:
默认情况下,所有记录都编制了索引。要控制哪些记录被编入索引,请将should\u index?
方法与search\u import
范围一起使用
这应该适用于您的情况:
class People < ApplicationRecord
searchkick # you probably already have this
scope :search_import, -> { where(b: "type1") }
def should_index?
self.search_import # only index records per your `search_import` scope above
end
def search_data # looks like you already have this, too
{
a:a,
b:b,
c:c,
}
end
end
class-People{where(b:“type1”)}
def应该索引吗?
self.search_import#仅为上述“search_import”范围内的记录编制索引
结束
def search#u data#看起来您也已经有了这个
{
a:a,
b:b,
c:c,
}
结束
结束
有点晚了,但今天早些时候一位队友提出了这个问题,我认为这个话题应该得到更详细的回答
据我所知,您有两个选项来控制哪些记录被searchkick索引:
search\u import
来限制记录searchkick索引。基本上,当一次索引多个记录时,如运行searchkick:reindex
task时,使用此范围should\u index?
方法,该方法在索引之前对每个记录调用,它确定是否应在索引中添加或删除记录b
等于'type1'
的记录,您可以执行以下操作:
class-People{where(b:'type1')}
def应该索引吗?
b==“类型1”
结束
结束
请注意,从
应该导入?
返回false
将从索引中删除记录,正如您所能读取的那样。在应该索引中,应该是b而不是self。search\u import?不,不应该是b
def should_index?
仅对should_index?
块内返回的记录进行索引。而且,self.search\u import?
将调用search\u import
作用域,它将只返回b==“type1”
的记录,这意味着这些是将被索引的唯一记录。您不能跳过search\u import作用域声明,只将逻辑放在should\u index内吗?是的,从我在代码和中看到的情况来看,search\u import
和should\u index?
在记录被索引之前都会被调用,因此您应该能够使用其中一个。