2

メタサーチの検索方法を連鎖させるにはどうすればよいですか?

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

ActiveRecordのチェーンメソッドを次のように呼び出すことができます

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

その連鎖はメタ検索の結果で可能ですか?

4

2 に答える 2

3

動作しました。同じ問題が発生した場合は、次の手順を試してください。

の検索メソッドは、モデルの名前をmeta_search返します。Meta_searchは、このオブジェクトのメソッドを提供します。メソッドを呼び出してオブジェクトを取得してから、そのオブジェクトに対してもう一度検索メソッドを呼び出すことができます。私が正確に話していることを確認するには、以下のコードを参照してください。MetaSearch::Search::ModelNameModelNamerelationrelationActiveRecord::Relation

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

@resultこれがのインスタンスであるため、メソッドをMetaSearch::Search::User呼び出してieのインスタンスを取得できますrelationActiveRecord::Relation

@result.relation

次に、このインスタンスで検索メソッドを再度呼び出すことができます。すなわち

@result.relation.search(params[:filters])
于 2012-08-10T11:22:28.110 に答える
2

一度に検索するのはどうですか

@result = User.search  params[:search].merge(params[:filters])
于 2012-08-10T11:26:58.453 に答える