在Sunspot可搜索中反转ignore_attribute_changes_of

时间:2012-10-24 13:29:36

标签: ruby-on-rails ruby solr sunspot

在Sunspot Solr中,我有一个模型Contact,我在Solr中编入索引。 Contact模型有许多属性,但我将其中两个归结为:name:email。为了防止每次Contact中的字段发生更改,我们都会联系Solr,我会在可搜索时使用:ignore_attribute_changes_of

事实上,我只是想在更改:name:email时更新我的​​索引。我这样做:

fields = (Contact.attribute_names - ["name", "email"]).map{|o| o.to_sym}

searchable :ignore_attribute_changes_of => fields do
  text :name
  text :email
end

这对我来说似乎是错误的方式。有没有办法告诉Sunspot可以搜索更新某些属性?也就是说,是否存在ignore_attribute_changes_of的倒数或是否存在以这种方式构建的原因?

1 个答案:

答案 0 :(得分:-1)

我想,您可以在模型中禁用自动索引,并以这种方式将索引操作移动到控制器

模型中的

searchable :auto_index => false do
  text :name
  text :email
end
控制器

中的

def update
  ...
  if @contact.name_changed?||@contact.email_changed?
    Sunspot.index(@contact)
  end
end