我正在通过 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)
}
我多次这样做,它是有效的。我更喜欢为可读性而构建一个 Where 条件(而不是必须阅读 10 个范围来理解实际查询)。
有没有一种干净的方法可以做到这一点?