我使用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