2011-06-19 13 views
5

私はSunspotを使用して、私のアプリケーションのインデックスと概要の多くを生成しています。Sunspot:子モデルの更新時に親モデルの強制インデックス

このアプリでは、親/子の1対多の関係を持つ2つのモデルがあります。 Sunspotでは親が持つ子の数を索引付けするので、ソート、スコープなどで利用できます。

ただし、子モデルを変更すると、親モデルは自動的に再インデックス化されません(変更されていないため) 。子のcall_backを介してparent.saveを強制しても、インデックスは強制されません。だから、

私は離れてハッキングを開始する前に:

を子モデルが追加/変更されます際に黒点で親クラスのindexアクションを強制するための最良の方法だろうか?

答えて

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