0

has_many関係を介して、関連する多くのモデルを検索する必要があります。議論のために、has_manyアソシエーションを介して多くのカテゴリを持つProductモデルがあるとしましょう。親モデルの子アソシエーションの多くでこれを行う必要があるため、キャッシュテーブルを作成しました。このテーブルでは、アソシエーション内のすべてのIDをコンマ区切りの文字列として保存します。参加します。これは、後でカテゴリIDの条件付きANDを使用して実行する必要がある高度な検索にも役立ちます。

私の質問は、アクティブレコード内のそのような文字列内のIDの存在を照会するための最良の方法は何ですか。たとえば、ID 34、56、78の関連付けを持つすべての親モデルが必要な場合。

1つのIDを正確に検索するには、IDが占める可能性のある文字列内のさまざまな位置を説明するために、「%、34、%」、「34、%」、「%、34」を検索する必要があります。もっと簡単な方法はありますか?

4

1 に答える 1

0

これがどれほど速いかはわかりませんが、文字列をコンマで分割して配列を作成し、その配列に対して実行できます.includes?()...しかし、これは本当にSQLよりも速いですか?

value.split(',').includes?(other_value)

または複数のアイテムで:

value.split(',') && [id1, id2, id3]

これにより、両方の配列に表示される ID のリストが返されます。

于 2013-03-15T09:27:04.010 に答える