1

ユーザーが作成したドキュメントを保存するアプリケーションがあります。これらのドキュメントには、作成者と作成日があります。作成者はロールを持つことができます。さらに、特定のドキュメントがキーワードでタグ付けされる場合があります。データベースには最大 16,000 のドキュメントがあり、ユーザーは制限としてこの情報の任意の組み合わせでドキュメントを表示したい場合があります。たとえば、特定の作成者によるすべてのドキュメント、特定の時間枠で公開されたドキュメント、またはこの役割の作成者からのドキュメントなど (およびこれらの任意の組み合わせ) を表示します。

これを実装するための推奨される最良の方法はありますか? 一般に、params ハッシュで目的の条件を渡し、複雑な if ... elsif.... else.. を使用して、渡された条件を別の Model.find 呼び出しに直接デコードしました。または、同様の if シーケンスを使用して適切な SQL 条件句を作成し、単一の検索呼び出しを使用します。

これらは両方ともハックのように見え、名前付きスコープでそれを行うより良い方法があるはずですが、順列を処理するきれいな方法がわかりません。

4

2 に答える 2

1

Ben Johnson の SearchLogic を調べてください。これは、基本的に名前付きスコープをオンザフライで生成する gem です。

http://github.com/binarylogic/searchlogic/tree/master

于 2009-08-13T04:48:47.250 に答える
0

を使用する必要があるのは、1 行のコードだけです Model.find。条件付きロジックを使用して複数のfind呼び出しを作成する代わりに、条件付きロジックを使用:conditionsして、呼び出しに渡されるハッシュを設定しfindます。

于 2009-08-14T15:06:43.423 に答える