代码之家  ›  专栏  ›  技术社区  ›  holden

在Rails 3中分解复杂的搜索查询

  •  1
  • holden  · 技术社区  · 14 年前

    我有一个控制器,它有很多选项通过表单发送给它,我想知道如何最好地将它们分开,因为它们不是同时使用的。即有时没有,标签,有时没有指定价格。对于价格,我有一个默认的价格设置,这样我可以一直在那里处理它,但是标签要么需要在那里,要么不需要。等。

    @locations = Location.find(params[:id])
    
    @location = @locations.places.active.where("cache_price BETWEEN ? AND ?",price_low,price_high).tagged_with([params[:tags]).order(params[:sort]).paginate :page => params[:page]
    

    我没有看到任何好的例子,但我相信这肯定经常发生…有什么建议吗?此外,即使最后附加的分页也应该是可选的,因为结果要么转到列表,要么转到谷歌地图,而地图不需要分页。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Nicolas Blanco    14 年前

    fruits = Fruit.scoped
    fruits = fruits.where(:colour => 'red') if options[:red_only]
    fruits = fruits.where(:size => 'big') if options[:big_only]
    fruits = fruits.limit(10) if options[:only_first]
    ...
    

    http://github.com/novagile/basic_active_model

    http://github.com/novagile/scoped-search