Автоматическое индексирование дочерней модели в солнечных пятнах (с полями, требующими сохранения родителя)

У меня есть модель Author с отношением has_many к модели Book. Книги индексируются солнечным пятном и имеют индексированное поле :author_name, которое извлекает имя автора, связанного с ним.

У меня есть форма, позволяющая создавать автора и одновременно добавлять книги через

accepts_nested_attributes_for :book

Моя проблема в том, что при создании нового автора с книгами новые книги не индексируются правильно. Я считаю, что когда книги создаются и вызывается индекс солнечных пятен after_save, соответствующий новый автор еще не зафиксирован, и поэтому его имя не существует.

Какое лучшее решение для этого? Я попытался добавить хук after_commit в модель автора для индексации всех связанных книг, но когда этот метод перебирает книги, их идентификаторы/ассоциации равны нулю.


person spike    schedule 03.09.2011    source источник


Ответы (1)


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

person spike    schedule 10.09.2011