2010-02-07 5 views
3

У меня есть named_scope Rails, который использует условие, чтобы тянуть в определенные дни недели из-за стола, как так:Простой пользовательский диапазон в Рубине

:conditions => [ 'EXTRACT(DOW FROM bookdate) IN (?)', (1..6).to_a ] 

1..6 диапазон дат будет изменяться в зависимости на даты, которые пользователь хочет,

который производит этот SQL

(EXTRACT(DOW FROM bookdate) IN (1,2,3,4,5,6) 

Моя проблема в том, что дни недели не простой диапазон ... т.е. 1..6 работает отлично (пн .. .Sat), но скажем, 6..2 не будет ork правильно (Sat-Вт) ... либо как рубиновый диапазон, либо как это должно быть 6,7,1,2, а не 6,5,4,3,2 (при условии, что 6,2 работали в рубине, которого нет).

Как создать пользовательский диапазон для дней недели, который будет соответствовать диапазону дат, подобным этому?

Любые идеи?

Спасибо,

ответ

7

Если вы хотите, функция для генерации диапазон значений для включения в :conditions, которые будут работать на диапазонах, как Сат-Вт, а также с понедельника по субботу, как о:

def day_range(from, to) 
    if from <= to 
    (from..to).to_a 
    else 
    (from..7).to_a + (1..to).to_a 
    end 
end 

например

irb(main):032:0> day_range(1, 6) 
=> [1, 2, 3, 4, 5, 6] 
irb(main):033:0> day_range(6, 2) 
=> [6, 7, 1, 2] 

Тогда это всего лишь случай сопоставления имен дней и чисел дня, если это необходимо.

 Смежные вопросы

  • Нет связанных вопросов^_^