gpt4 book ai didi

ruby-on-rails - 始终向 searchkick 查询添加默认的 where 子句

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:50 26 4
gpt4 key购买 nike

我有一个用例,在每个 session 中我需要为所有 searchkick 查询添加一个 where 子句。这基本上是这样一种情况,我有来自多个数据库中的多个客户端的数据,并且 searchkick 索引包含一个名为 client_id 的字段。

我不想对所有查询都这样做。有什么方法可以让我说添加一个 where: {client_id: "XXXX"} 到这个 session 中的所有 searchkick 查询。

最佳答案

您可以重新定义单例方法以自动添加“where :”参数,在类定义中的 searchkick 之后添加:

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

关于ruby-on-rails - 始终向 searchkick 查询添加默认的 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com