Pregunta

Tengo un named_scope rieles que está utilizando una condición para tirar determinados días de la semana a partir de la tabla de esta manera:

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

El intervalo de fechas 1..6 será una variable en función de las fechas en que el usuario desee,

¿Qué produce este SQL

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

Mi problema es que los días de la semana no son una gama sencilla ... es decir 1..6 funciona bien (de lunes a sábado ...), pero dicen 6..2 no funcionará correctamente (Sat-mar) ... ya sea como un rubí o rango, ya que tendría que ser 6,7,1,2 y no 6,5,4,3,2 (suponiendo 6..2 trabajaban en rubí, que no lo hace).

¿Cómo puedo crear un intervalo personalizado para los días de la semana que se adapten a un intervalo de fechas como esta?

¿Alguna idea?

Gracias,

¿Fue útil?

Solución

Si desea una función para generar el rango de valores para la inclusión en :conditions que trabajarán para rangos como Sat-mar, así como de lunes a sábado ¿qué tal:

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

por ejemplo.

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]

Entonces es sólo un caso de la cartografía de los nombres de los días a los números de días si es necesario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top