我对 Rails 有点陌生,并且一直在使用 Rails 3.2 中的范围。我喜欢范围如何将代码与控制器分开。但是,当我使用范围构建查询时,我无法弄清楚在某些情况下如何不添加范围。请参阅下面的示例...
在我的 CarsController 类中
if !params[:make_name].blank?
@cars = Car.by_make(params[:make_name]).find(:all, :group => "name")
else
@cars = Car.all
在我的汽车模型课上。代码试图说“如果 make_name 字符串是 'all',则不要在其上添加任何条件,否则添加条件。”
def self.by_make(make_name_str)
if make_name_str == "all"
where("cars.id > ?", 0)
else
make_id = Make.where(:name => make_name_str).first.id
where(:make_id => make_id)
end
end
显然,字符串为“all”的情况看起来很黑,这就是我的问题所在。我如何编写它以不返回任何内容 - 基本上,在这种情况下不要添加任何范围?