Инверсия 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
Другие вопросы по тегам