#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:
Глядя на источник, вы сможете сохранить затронутые модели (например, после смены пользователя найдите и сохраните все их заказы), и ключевые слова будут автоматически обновлены.