El encadenamiento de los ámbitos con nombre no funciona como es debido

Tengo 2 ámbitos nombrados simples definidos como tales:

class Numbers  {:title => ['2','4','6']} named_scope :odd, :conditions => {:title => ['1','3','5']} end 

si llamo a Numbers.even me devuelvo 2,4,6, que es correcto si llamo a Numbers.odd, devuelvo 1,3,5 que es correcto

Cuando los encadeno de esta manera: Numbers.even.odd recupero 1,3,5 porque ese es el último scope al que hago referencia. Así que si digo Numbers.odd.even obtendré 2,4,6.

Yo esperaría obtener 1,2,3,4,5,6 cuando los encadene. Otro enfoque que probé fue este:

 named_scope :even, :conditions => ["title IN (?)", ['2', '4','6']] named_scope :odd, :conditions => ["title IN (?)", ['1', '3','5']] 

Pero no obtengo resultados cuando los encadeno porque la consulta que crea se ve así:

 SELECT * FROM `numbers` WHERE ((title IN ('1','3','5')) AND (title IN ('2','4',6'))) 

La cláusula ‘AND’ debería cambiarse a OR, pero no tengo idea de cómo forzar eso. ¿Podría esto ser un problema con ActiveRecord?

Es un problema con la forma en que ActiveRecord maneja los ámbitos. Cuando aplica varios ámbitos, los resultados se unen junto con AND. No hay opción para usar OR.

Lo que debe hacer en su lugar es combinar dos conjuntos de resultados:

 Numbers.even.all + Numbers.odd.all