where条件とnear条件の両方を同時に検索して、両方の結果を表示する方法はありますか。基本的に、ユーザーが人の名前を入力できる検索バーが必要ですが、場所も入力すると、両方に一致する結果が検索に表示されます。whereクエリを実行してから、別のnearクエリを実行し、ジオコーディングされた結果をループしてメインの結果に追加しようとしましたが、これにより繰り返しが作成され、望ましくありません。何か案は?
1 に答える
1
どのジオコーディングジェムを使用していますか?私の推測では、セレクターが生成する同等のオプションを設定する代わりに、実行query.where.near
することができます。query.where
near
これは別の質問であり、理論的にはあなたが尋ねたものと直交しています...しかし、クエリがActiveRecordに渡される前に、コントローラーが決定を下していますか?たとえば、ユーザーが入力した場合、New York, NY
コントローラーはそれが場所であると「推測」しますか?それとも、入力が何であっても、名前の一致検索とジオコードの試行を試みるだけですか?入力を解析すると、if / elseの状況になる可能性があるため、これを尋ねます。ここで、if query is a location, do a geocode
またはelse do a search by name
。
データベースにアクセスする前に人の名前と場所の名前を区別しない検索ボックスを使用するのは賢明な設計ではないかと思いますが、創造的なユースケースがあるかもしれません。
于 2012-10-26T15:52:12.473 に答える