5

私はSunspotを使用して、アプリのインデックスと概要を多数生成しています。

このアプリでは、親子の1対多の関係を持つ2つのモデルがあります。Sunspotを使用すると、親が持つ子の数にインデックスを付けることができるため、これは並べ替え、スコーピングなどに使用できます。

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

だから私がハッキングを始める前に:

子モデルが変更/追加されたときにSunspotの親クラスにインデックスアクションを強制するための最良の方法は何でしょうか?

4

1 に答える 1

7

私は今同じ問題を抱えていました。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
于 2011-08-30T12:36:59.907 に答える