レポートを生成するために、Ruby を使用してクエリを作成しています。
query = Account.includes(:assets, :location, :category)
レポート リクエストには、複数のオプション パラメータがあります (たとえば、カテゴリが送信されたり、まったく初期化されなかったりする可能性があります)。
現在、スコープを適用してクエリを確立および割り当てた後、これらを検討しています
if category.present?
cat = Category.find_by_name(category)
query = query.in_category(cat) if cat.present?
end
範囲は
scope :in_category, lambda { |category|
where("#{table_name}.category_id = :category_id", :category_id => category.id)
}
私はこれを複数回行い、機能しています。(実際のクエリを理解するために 10 個のスコープを読まなければならないのではなく) 読みやすさのために構築されている単一の Where 条件を好むでしょう。
これを行うためのきれいな方法はありますか?