我在我的一个启用Searchkick的模型中有一个search_data方法,但在要求重新索引时,它看起来并不像是Searchkick。
这是我的模特(删节):
class Archive < ActiveRecord::Base
searchkick
def search_data
{:creator=>self[:creator],:description=>self[:description],:pdf=>self.pdf_contents,:title=>self[:title]}
end
def pdf_contents
Yomu.read(:text,File.read(path_to_file))
end
end
在Rails控制台中,Archive.first.search_data
返回我期望的内容:具有创建者,描述,pdf和标题属性的对象。但是,Archive.first.reindex
会抛出错误,说它无法解析dateacquisitioned字段。 ActiveRecord对象(Archive.first)确实具有dateacquisitioned属性,但正如您所看到的那样,它不在search_data方法的属性列表中。那么,为什么Searchkick的reindex方法试图在我没有要求时对dateacquisitioned属性进行索引?
答案 0 :(得分:0)
Tire(为Searchkick提供动力)在其reindex方法中调用to_hash
。
https://github.com/karmi/retire/blob/197325b4e7adfef3def5db187733c4530bd7dfed/lib/tire/index.rb#L317