Я пытаюсь выполнить запрос и найти 20 записей, недавно созданных в нескольких моделях, с помощью драгоценного камня sunspot_solr. В настоящее время это достигается без проблем, но я хотел добавить некоторые дополнительные проверки только для одной из искомых моделей.
В настоящее время в моей модели пользователя перечислены все новые созданные пользователи, но я хочу, чтобы в нем отображались только пользователи, подтвердившие свой адрес электронной почты. Я использую Devise для аутентификации пользователей и использую активную запись, чтобы найти всех пользователей, которые не были подтверждены. Я бы сделал что-то вроде:
User.where("confirmed_at is null")
Или наоборот, чтобы проверить обратное. Я попытался интегрировать это с моим поиском solr, так что...
Модель
#Unless the user being searched hasn't been confirmed...
searchable :unless=> proc { |user| user.confirmed_at == nil } do
time :created_at
time :confirmed_at
end
Контроллер
@updates = Sunspot.search(Upload,Help,User) do
without(:confirmed_at, nil)
order_by(:created_at, :desc)
paginate page: 1, per_page: 20
end
Однако это добавленное условие исключило только пользовательские записи, созданные после того, как условие было добавлено в модель. Я не совсем уверен, как работает индексация, но, похоже, она кэширует старую информацию, когда новые добавленные условия не применялись. Я могу подтвердить это, создав новую запись пользователя, и я сразу замечаю, что она не индексируется, пока я не проверю адрес электронной почты.
Что я пробовал:
- Остановка и перезапуск сервера
- Остановка сервера и попытка остановить и перезапустить solr, но это привело к ошибке PID, не найденной