Инверсия ignore_attribute_changes_of в 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 ответ
Я думаю, вы можете отключить автоматическую индексацию в модели и переместить действие индекса в контроллер таким образом
в модели
searchable :auto_index => false do
text :name
text :email
end
в контроллере
def update
...
if @contact.name_changed?||@contact.email_changed?
Sunspot.index(@contact)
end
end