Ruby on Rails: refactor big search method
Some notes on your code:


As you know, in Rails, params usually refers to query strings in a request. In a model I'd use something like attributes or simply options to avoid confussion.
Variable cars reused multiple times: yes, it's a very usual pattern, but IMO it's not right. I think different values deserve different names. 
You have a pattern to abstract here, use inject.


I gave an answer in SO a while ago with exactly this kind of problem, that's the approach I'd recommend: Approach post in SO