У меня есть две простые именованные области действия, определенные так:
class Numbers < ActiveRecord::Base
named_scope :even, :conditions => {:title => ['2','4','6']}
named_scope :odd, :conditions => {:title => ['1','3','5']}
end
если я позвоню Numbers.even я вернусь 2,4,6, что правильно
если я звоню Numbers.odd, я получаю 1,3,5, что правильно
Когда я соединяю их вместе, как это: Numbers.even.odd, я получаю 1,3,5, потому что это последняя область, на которую я ссылаюсь. Поэтому, если я скажу Numbers.odd.even, я получу 2,4,6.
Я бы ожидал получить 1,2,3,4,5,6, когда собрал их вместе. Еще один подход, который я попробовал, заключался в следующем:
named_scope :even, :conditions => ["title IN (?)", ['2', '4','6']]
named_scope :odd, :conditions => ["title IN (?)", ['1', '3','5']]
Но я не получаю результатов, когда объединяю их в цепочку, потому что создаваемый запрос выглядит так:
SELECT * FROM `numbers`
WHERE ((title IN ('1','3','5')) AND (title IN ('2','4',6')))
Предложение 'AND' должно быть изменено на OR, но я не знаю, как это сделать. Может ли это быть проблемой с ActiveRecord?