要检查范围,我会做这样的事情,这对我有用
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] 中给我选择的值,这是一个数组。
Short 代表范围 0..5 ,Medium 5..20 ,Long>50
问题
现在,我如何以最好的方式构建与上述类似的条件。我不想使用太多 if-else 之类的条件conditions[:orders][:duration]=0..5 if params[:duration].include?("short)
……除非这是最好的方法?映射是更好的解决方案吗?