太阳黑子:更新子模型时父模型的强制索引

时间:2011-06-19 12:10:05

标签: ruby-on-rails ruby-on-rails-3 sunspot sunspot-rails

我正在使用Sunspot生成很多我的应用程序索引和概述。

在这个应用程序中,我有2个模型,它们具有父/子一对多的关系。使用太阳黑子我索引父母拥有的孩子数量,因此可用于排序,范围等。

但是,当我更改子模型时,父模型不会自动获得重建索引(因为它没有更改)。通过子节点上的call_back强制parent.save也不会强制索引。

所以在我开始乱砍之前:

当更改/添加子模型时,在太阳黑子中强制对父类执行索引操作的最佳方法是什么?

1 个答案:

答案 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