2014-12-05 3 views
0

Я хотел бы повторно использовать область, которую я определил, но возвращает массив.Rails 4 chaining scope

scope :currents, -> { (where('started_at < NOW()') | where('started_at' => nil)) & where('ended_at > NOW()') & where('published_at < NOW()') } 

def self.findNextAuctions() 
    currents.order(ended_at: :asc).limit(3) 
end 

Когда я вызываю функцию findNextAuctions я получаю эту ошибку:

1) Error: 
AuctionTest#test_should_fint_next_auctions: 
NoMethodError: undefined method `order' for #<Array:0x007fae5d6e3878> 
    app/models/auction.rb:13:in `findNextAuctions' 
    test/models/auction_test.rb:14:in `block in <class:AuctionTest>' 

ответ

1

Rails не имеет оператор OR. Вы можете написать SQL напрямую, хотя что-то вроде

where("(started_at < NOW() or started_at = null) and ended_at > NOW() and published_at < NOW()")