我使用search logic来过滤公司列表页面上的结果。用户可以使用各种指定的URL指定任意数量的参数。例如:在Rails中干燥搜索逻辑
/位置/ 墨西哥
/扇区/ 技术
/扇区/ 金融 /位置/ 阿根廷
结果分别如下:
params[:location] == 'mexico'
params[:sector] == 'technology'
params[:sector] == 'financial' and params[:location] == 'argentina'
我现在正在尝试清理或'干'我的模型代码。目前我有:
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
我不喜欢重复搜索。有什么建议么?谢谢。
使用紧凑,而不是拒绝: - 它应该是更快,做同样的(零?)。你也可以尝试params.values_at(:location,:sector).compact.each ... – hurikhan77 2010-06-06 09:14:04
好主意。我喜欢'拒绝nil',因为它立即清楚它做了什么。 'values_at'很好,特别是如果有更多的参数。 – 2010-06-06 11:06:28