如何链接元搜索的搜索方法?
@result = User.search(params[:search]).search(params[:filters])
我们可以在 ActiveRecord 上调用链方法,例如
User.active.male.where( age: 14..20)
它的链接在元搜索的结果上是可能的吗?
我让它工作了。如果您遇到同样的问题,可以尝试以下操作。
meta_search
的搜索方法返回MetaSearch::Search::ModelName
其中 ModelName
是模型的名称。Meta_search提供了为此对象relation
的方法。可以调用relation
方法来获取ActiveRecord::Relation
对象,然后可以对该对象再次调用搜索方法。请参阅下面的代码以了解我到底在说什么。
@result = User.search(params[:search])
@search = @result.relation.search(params[:filters])
这里@result
是MetaSearch::Search::User
的实例,因此我们可以调用relation
方法来获取ActiveRecord::Relation
的实例,即
@result.relation
然后我们可以在这个实例上再次调用搜索方法。
@result.relation.search(params[:filters])
一次性搜索怎么样
@result = User.search params[:search].merge(params[:filters])