要检查范围,我会做一些适合我的事情
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>
Rails直接为我提供params [:duration]中的选定值,这是一个数组。
短表示范围0..5,中等5..20,长> 50
问题
现在,我如何以最佳方式构建与上述相似的条件。我不想使用像conditions[:orders][:duration]=0..5 if params[:duration].include?("short)
这样的if-else之类的条件等等......除非这是最好的方法吗?是映射更好的解决方案吗?
答案 0 :(得分:0)
这样的事情:
DURATION_OPTIONS = { 'Short' => 0..5,
'Medium' => 5..20,
'Long' => 50..Float::INFINITY }
DURATION_OPTIONS[ params[:duration] ]