各セッションで、すべての searchkick クエリに where 句を追加する必要があるユースケースがあります。これは基本的に、複数の DB に複数のクライアントからのデータがあり、searchkick インデックスに client_id というフィールドが含まれている場合です。
すべてのクエリに対してそれを続けたくありません。このセッションのすべての searchkick クエリに where: {client_id: "XXXX"} を追加する方法はありますか。
各セッションで、すべての searchkick クエリに where 句を追加する必要があるユースケースがあります。これは基本的に、複数の DB に複数のクライアントからのデータがあり、searchkick インデックスに client_id というフィールドが含まれている場合です。
すべてのクエリに対してそれを続けたくありません。このセッションのすべての searchkick クエリに where: {client_id: "XXXX"} を追加する方法はありますか。
searchkick
シングルトン メソッドを再定義して、クラス定義に次を追加した後、「where :」パラメータを自動的に追加できます。
class<<Product
alias oldsearch search
def search(s, l, o)
oldsearch s, where: {client_id: "XXXX"}, limit: l, offset: o
end
end
$ irb
2.2.0 :001 > class A
# searchkick adds his methods to your model like this:
2.2.0 :002?> class<<self
2.2.0 :003?> def a
2.2.0 :004?> puts 'a'
2.2.0 :005?> end
2.2.0 :006?> end
# and you are adding following:
2.2.0 :007?> class<<self
2.2.0 :008?> alias b a
2.2.0 :009?> def a
2.2.0 :010?> puts 'a-new'
2.2.0 :011?> b
2.2.0 :012?> end
2.2.0 :013?> end
2.2.0 :014?> end
=> :a
2.2.0 :015 > A.a #=> a-new
# a
Product.search
そしてもちろん、必要なパラメーターで呼び出すラッパー メソッドを作成することもできます。