我正在使用Sunspot生成很多我的应用程序索引和概述。
在这个应用程序中,我有2个模型,它们具有父/子一对多的关系。使用太阳黑子我索引父母拥有的孩子数量,因此可用于排序,范围等。
但是,当我更改子模型时,父模型不会自动获得重建索引(因为它没有更改)。通过子节点上的call_back强制parent.save也不会强制索引。
所以在我开始乱砍之前:
当更改/添加子模型时,在太阳黑子中强制对父类执行索引操作的最佳方法是什么?
答案 0 :(得分:7)
我现在遇到同样的问题。在查看API documentation for Sunspot之后,似乎Sunspot使用方法index()
扩展模型,强制实例重新编制索引。
考虑到这一点,它应该只是挂钩子模型的after_save回调,在将父存储到数据库时重新索引父项:
class Parent < ActiveRecord::Base
has_many :children
end
class Child < ActiveRecord::Base
belongs_to :parent
after_save :reindex_parent!
def reindex_parent!
parent.index
end
end