我正在使用 Sunspot 生成很多我的应用程序索引和概览。
在这个应用程序中,我有 2 个具有父/子一对多关系的模型。使用 Sunspot,我可以索引父母拥有的孩子的数量,因此可用于排序、范围界定等。
但是,当我更改子模型时,父模型不会自动重新索引(因为它没有更改)。通过对孩子的 call_back 强制 parent.save 也不会强制索引。
所以在我开始破解之前:
当更改/添加子模型时,在 Sunspot 的父类上强制执行索引操作的最佳方法是什么?
我正在使用 Sunspot 生成很多我的应用程序索引和概览。
在这个应用程序中,我有 2 个具有父/子一对多关系的模型。使用 Sunspot,我可以索引父母拥有的孩子的数量,因此可用于排序、范围界定等。
但是,当我更改子模型时,父模型不会自动重新索引(因为它没有更改)。通过对孩子的 call_back 强制 parent.save 也不会强制索引。
所以在我开始破解之前:
当更改/添加子模型时,在 Sunspot 的父类上强制执行索引操作的最佳方法是什么?
我现在遇到了同样的问题。在查看了Sunspot 的 API 文档后,似乎 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