2013-03-19 90 views
0

要檢查的範圍內我做這樣的事情這對我的作品使用活動記錄

conditions[:orders][:created_at]=created_start_date..created_end_date if params[:created_start_date].present? and params[:created_end_date].present? 

這在以後用作直接查詢條件檢查各種範圍。

背景

現在我可以給我多值的選擇選項。 假設在查找表中,用戶選擇持續時間爲短,中,短,中,長,代表三個選項。

<select class="advancedSearchFormSelectBox" multiple="multiple" name="filters[duration][]"><option value="Short">Short</option> 
<option value="Medium">Medium</option> 
<option value="Long">JLong</option></select> 

導軌直接給我所選擇的值在PARAMS [:持續時間]這是一個數組。

短代表範圍0..5,中5..20,長> 50

問題

現在我該怎樣幀相似的條件在上面的最好的方式之一。我不想使用太多的if-else像這樣的條件conditions[:orders][:duration]=0..5 if params[:duration].include?("short)等......除非這是最好的方式?映射更好的解決方案嗎?

回答

0

什麼是這樣的:

DURATION_OPTIONS = { 'Short' => 0..5, 
        'Medium' => 5..20, 
        'Long' => 50..Float::INFINITY } 
DURATION_OPTIONS[ params[:duration] ] 
+0

不會因爲PARAMS工作[:時間]可能是形式的[ 「短」, 「中等」] – 2013-03-19 16:13:25