1

異なるテーブルを関連付ける searchlogix 条件をチェーンすると、結果が重複します。

単一のテーブルからフィールドを照会する searchlogix 条件をチェーンすると、結果は完全に機能します。

以下は、複数のテーブルにまたがる連鎖条件の例です (マシンはメーカーに属し、マシン habtm ツールとシステムに属します)。

Machine.manufacturer_id_equals(params[:search][:manufacturer]) \
.tools_id_equals(params[:search][:tools]) \
.systems_id_equals(params[:search][:systems]

このクエリでは、有効な結果は 1 つだけ返されますが、同じ行が 8 回返されます (合計結果は、異なるテーブルを検索する新しい条件ごとに 2 倍になるようです)。

参加、関連付けなどに問題があると思います。

更新: (反復的な) 結果が返されているようです。2 つの有効なマシン マッチがあるとします。ただし、クエリは、マシンに関連するツールとシステムごとに一致を返しています。したがって、マシンに 2 つのツールと 2 つのシステムがある場合、4 回返却されます。

一時的な修正は、返された配列で uniq を呼び出すことであり、繰り返しの結果を排除します。ただし、これは気分が悪く、ほぼ確実に拡張できません。

誰でもガイダンスを提供できますか?ありがとうございました。

4

0 に答える 0