Rails 3:在查询结果中搜索

时间:2013-08-22 12:32:16

标签: mysql ruby-on-rails-3 search

这是我的查询结果(请注意“包含”):

 @example_cars_collection = Car.where("name like ? ", "#{params[:car_name]}%").includes(:brand, :color, :shop)

现在,我想在@example_cars_collection中找到一辆名为“Opel”的汽车而不进行任何查询......我怎么能这样做?

我试着......

 @example_cars_collection.where(:brand_id => Brand.where("name like ? ", "#{params[:brand_name]}%").select(:code))

...我得到了正确的结果,但显然我正在做一个新的查询...所以我的问题是,是否可以搜索查询结果。

任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

使用to_a根据结果构建数组,然后使用任何Array方法:

@example_cars_collection.to_a.select { |car| car.brand.name.start_with?(params[:brand_name) }

请注意,如果您在抓取brand时从包含的关联中排除@example_cars_collection,则此代码会在执行brand时导致N + 1个查询获取每个car.brand

此外,如果您没有to_a,而是将块传递给select,框架会将调用委托给Array#select而不是与sql相关的select。