2013-03-19 64 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