わかりました、私は午前中ずっとこれにアプローチする方法を理解しようとしていました。次のようなハッシュがあるとします。
{"luxury_shopper"=>"10", "movie_goer"=>"80"}
次のようなクエリを作成します。
Observation.search("something", boost_by: {biz_trv:{factor: 10}} && {day_com:{factor:100}})
これまでの私のアプローチは、受信ハッシュを次のように変換することです。
[{:luxury_shopper=>{:factor=>"10"}}, {:movie_goer=>{:factor=>"80"}}]
次のように元のハッシュを反復処理します。
params[:filter].map {|k,v| {k.to_sym => {factor:v}}}
私が抱えている問題は、作成しようとしているクエリが「boost_by」する不明な数のハッシュで構成されているため、filters[0] && filters[1]
ここで困惑しているようなことをすることができないということです。クエリにハッシュを動的に挿入し、それらの間に演算子を配置する方法を知っている人はいますか?
編集:
クエリは次のようになります。
Observation.search("someting", boost_by: `insert hash` `insert operator` `insert hash` etc...)
上記のクエリには、任意の数のハッシュと演算子を含めることができます。したがって、ユーザーが 10 個のフィールドを boost_by に渡したい場合、10 個すべてのハッシュとそれらの間の演算子を受け入れることができる必要があるため、たとえば、クエリは次の例のいずれかのようになります。
Observation.search("something", boost_by: {biz_trv:{factor: 10}})
Observation.search("something", boost_by: {biz_trv:{factor: 12}} && {day_com:{factor:50}} && {location:{factor:40}})