我正在逐步建立一个 Active Record Relation 对象,允许用户按汽车的品牌和型号过滤汽车零件列表:
parts = Part.where(:listed => (start_date..end_date))
unless filters[:make_id].nil? || filters[:make_id] == 0
parts = parts.joins(:car).
where("cars.make_id = ?", filters[:make_id] )
end
unless filters[:model_id].nil? || filters[:model_id] == 0
parts = parts.joins(:car).
where("cars.model_id = ?", filters[:model_id] )
end
etc...
这是重复的,我想把它提取到一个以“make_id”和“model_id”为参数的方法中。要保留的一个重要特性是,如果过滤器为 nil(例如,用户未指定模型),则返回所有模型的部件。
我不知道如何解决这个问题,我不确定谷歌该怎么做。你能帮我吗?