次のスキーマを持つ Rails アプリがあります。
ユーザー (id、username、user_type、master_id) アイテム (id、itemname、is_master、master_id) 修理 (id、in_date、out_date、user_id、item_id)
アプリは小さいので、データベースをできるだけシンプルに保つようにしました。ユーザーは、管理者、ディーラー、またはマネージャーです。マネージャーは、彼の下に多くのディーラーを持つことができます (両方とも同じユーザー テーブルに格納されます)。
Item は、コンピューターのようなマスター アイテム (キーボード、マウスなどの多くのサブ アイテムを含む) にすることも、小さなサブ アイテムにすることもできます。マスター アイテムは、その下に多くのサブ アイテムを持つことができます。
修理はアイテムの修理履歴です。修理にはアイテムとユーザーが関連付けられています。
次のパラメーターを使用して検索しています(すべてオプション)
- マネージャー名
- 販売業者名
- マスターアイテム
- サブアイテム
- 日付中
- 期限切れ
ディーラー名が指定されていない場合は、マネージャー内のすべてのディーラーが指定された結果が必要です。サブアイテムが指定されていない場合は、マスターアイテムの下のすべてのアイテムが結果に含まれるようにします。
コードをシンプルで保守しやすいものにするには、検索コントローラーをどのように定義する必要がありますか? 条件ごとに「if」を実行したくありません。