在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
的倒数或是否存在以这种方式构建的原因?
答案 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