いくつかのモデルを使用した単純なアルゴリアのセットアップがあり、各モデルにはいくつかの属性があります。例:
class User < ActiveRecord::Base
include AlgoliaSearch
algoliasearch do
attributes :id, :name
add_attribute :_tags
end
def _tags
users = []
self.connections.each do |connection|
users.push('user_' + connection.user_id.to_s)
end
users
end
end
上記の設定により、ユーザーごとに検索結果を簡単に制限できるため、Rails アプリで関連付けられているかどうかを確認する権限があるレコードのみがユーザーに表示されます。
ただし、Connection
モデルが作成または破棄されると、User
モデルは認識されないため、検索結果に悪影響を及ぼします。
Connection
モデルに ActiveRecord コールバックを追加し、_tags
それに応じてレコードのキーを更新_tags
して、(作成または破棄に基づいて) 含めるまたは除外するように更新するにはどうすればよいですか?
tldr: Algolia_tags
のレコードには['user_1', 'user_2']
、Rails の関連付けによって決定される値があります。Algolia のレコードと Rails の DB から削除されたレコードの間の関連付けは、Algoliaのレコードのタグの配列からuser_2
削除するにはどうすればよいですか?user_2