DRYing Search Logic in Rails

Posted by Kevin Sylvestre on Stack Overflow See other posts from Stack Overflow or by Kevin Sylvestre
Published on 2010-06-06T08:11:50Z Indexed on 2010/06/06 8:12 UTC
Read the original article Hit count: 320

Filed under:

I am using search logic to filter results on company listing page. The user is able to specify any number of parameters using a variety of named URLs. For example:

/location/mexico
/sector/technology
/sector/financial/location/argentina

Results in the following respectively:

params[:location] == 'mexico'
params[:sector] == 'technology'
params[:sector] == 'financial' and params[:location] == 'argentina'

I am now trying to cleanup or 'DRY' my model code. Currently I have:

def self.search(params)
    ...
    if params[:location]
        results = results.location_permalink_equals params[:location] if results
        results = Company.location_permalink_equals params[:location] unless results
    end
    if params[:sector]
        results = results.location_permalink_equals params[:sector] if results
        results = Company.location_permalink_equals params[:sector] unless results
    end
    ...
end

I don't like repeating the searchs. Any suggestions? Thanks.


© Stack Overflow or respective owner

Related posts about ruby-on-rails