2

Sunspot Solr には、ContactSolr でインデックスを作成するモデルがあります。モデルには多くの属性がありますが、そのContactうちの 2 つと. Solrに連絡する際にフィールドが変更されるたびにそれを防ぐために、私は検索可能で使用します。:name:emailContact:ignore_attribute_changes_of

:name実際、またはを変更したときにインデックスを更新したいだけです:email。私はこのようにします:

fields = (Contact.attribute_names - ["name", "email"]).map{|o| o.to_sym}

searchable :ignore_attribute_changes_of => fields do
  text :name
  text :email
end

これは私には間違った方法のようです。Sunspot searchable に特定の属性の変更のみを更新するように指示する方法はありますか? つまり、ignore_attribute_changes_ofこのように構築されているのとは逆か、それとも理由がありますか?

4

1 に答える 1

-2

モデルの自動インデックス作成を無効にして、この方法でインデックス アクションをコントローラーに移動できると思います。

モデルで

searchable :auto_index => false do
  text :name
  text :email
end

コントローラーで

def update
  ...
  if @contact.name_changed?||@contact.email_changed?
    Sunspot.index(@contact)
  end
end
于 2012-11-15T17:30:55.973 に答える