search_data方法不能与Searchkick reindex一起使用

时间:2014-02-12 16:33:13

标签: ruby-on-rails-4 elasticsearch

我在我的一个启用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属性进行索引?

1 个答案:

答案 0 :(得分:0)

Tire(为Searchkick提供动力)在其reindex方法中调用to_hash

https://github.com/karmi/retire/blob/197325b4e7adfef3def5db187733c4530bd7dfed/lib/tire/index.rb#L317