链元搜索结果

时间:2012-08-10 10:13:40

标签: ruby-on-rails activerecord named-scope meta-search active-relation

如何链接元搜索的搜索方法?

@result = User.search(params[:search]).search(params[:filters])

我们可以在ActiveRecord上调用链式方法,如

User.active.male.where( age: 14..20)

它可以在元搜索结果中链接吗?

2 个答案:

答案 0 :(得分:3)

我得到了它的工作..如果你有同样的问题,你可以试试。

meta_search的搜索方法会返回MetaSearch::Search::ModelName,其中ModelName是模型的名称。 Meta_search为此对象提供方法relation。您可以调用relation方法获取ActiveRecord::Relation对象,然后可以再次对该对象调用搜索方法。请参阅下面的代码,了解我正在谈论的内容。

@result = User.search(params[:search])
@search = @result.relation.search(params[:filters])

此处@resultMetaSearch::Search::User的实例,因此我们可以调用relation方法获取ActiveRecord::Relation的实例,即

@result.relation

然后我们可以在这个实例上再次调用搜索方法。即

@result.relation.search(params[:filters])

答案 1 :(得分:2)

一次性搜索

@result = User.search  params[:search].merge(params[:filters])