Поисковый камень Mongoid не обновляет ключевые слова по ассоциации

#ruby-on-rails #mongoid

Вопрос:

У меня есть приложение для электронной коммерции, в котором я использую mongoid search для поиска по заказу и его ассоциации с пользователем. Вот мои модели.

 order.rb

class Order
   include Mongoid::Document
   include Mongoid::Search

   belongs_to :user

   search_in user: %i[first_name last_name email_address]
end

user.rb

class User
   include Mongoid::Document
   include Mongoid::Search

   has_many :orders

   search_in :email_address, :first_name, :last_name
end
 

В основном конечная цель использования поиска-найти заказ пользователя по имени, фамилии и адресу электронной почты пользователя. При первом проходе я могу создать пользователя и заказать, и тот keywords , который mongoid использует для поиска, будет заполнен.

Однако, если я обновляю имя, фамилию или адрес электронной почты пользователя, ключевые слова для Order не обновляются. Следовательно, поиск прерывается и точность снижается.

Согласно документации, я могу выполнить следующую команду rake mongoid_search:index , и ключевые слова будут снова заполнены правильными.

Однако в производстве я не могу запускать эту команду каждый раз, когда что-то меняется. Мне нужно, чтобы он обновлялся автоматически. Есть ли что-то, что я делаю неправильно, если я обновлю ассоциированные объекты, ключевые слова не изменятся?

Ответ №1:

Глядя на источник, вы сможете сохранить затронутые модели (например, после смены пользователя найдите и сохраните все их заказы), и ключевые слова будут автоматически обновлены.