Here is the code:
Code:
def build_conditions(sql,cond,params)
filtered_params = {}
for (k,v) in params
filtered_params[k] = v if cond.any?{|c| c[0] == k}
end
[
[sql, cond.map{|pair|
pair[1] unless params[pair[0]].blank?
}.compact.join(' AND ')].join(' '),
filtered_params
]
end
def search
@search_result = Voter.find_by_sql build_conditions('SELECT v.* FROM voters v left join residences r on (r.id=v.residence_id) WHERE',
[
[:number, 'r.number = :number'],
[:streetname, 'r.streetname = :streetname'],
[:streettype, 'r.streettype = :streettype'],
[:city, 'r.city = :city'],
[:postalcode, 'r.postalcode = :postalcode']
],
params[:residence])
end
and here is the hash
Code:
Parameters: {"voter"=>{"lastname"=>"", "firstname"=>"", "ph_home"=>"000-000-0000"}, "commit"=>"Search", "residence"=>{"city"=>"", "number"=>"1241", "streetname"=>"", "postalcode"=>"", "streettype"=>""}}
Bookmarks