2013-03-20 3 views
1

Я не могу найти ссылку, как это работает:активная запись, где {}

Order.where {(expirate_at >= 10.days.ago) & (expirate_at <= 9.days.ago)} 

который дает SQL-запрос:

SELECT `orders`.* FROM `orders` 
    WHERE ((`orders`.`expirate_at` >= '2013-03-10 09:22:23' 
    AND `orders`.`expirate_at` <= '2013-03-11 09:22:23')) 

Может кто-то объяснить это, пожалуйста?

обновление:

Order.where({(expirate_at >= 10.days.ago) & (expirate_at <= 9.days.ago)}) 

заканчивается

SyntaxError: (irb):1: syntax error, unexpected '}', expecting tASSOC 
... & (expirate_at <= 9.days.ago)}) 
+0

Это работает рубиновым способом - http://edgeguides.rubyonrails.org/active_record_querying.html –

+0

Я знаю, как where() работает, но не нашел пример, почему он работает с {}. В учебниках нет ссылок на это. Я искал объяснения, прежде чем писать вопрос, но безуспешно. – sufleR

ответ

1

Был squeel камень, используемый в этом проекте. Тайна решена. ;)

0

Это то, что рубин путь.

Order.where {} 

не что иное, как

Order.where({}) 
+0

Это неправда. Order.where ({expirate_at> = 10.days.ago) & (expirate_at <= 9.days.ago)}) SyntaxError: (irb): 1: синтаксическая ошибка, неожиданная '}', ожидающая tASSOC .. . & (expirate_at <= 9.days.ago)}) – sufleR

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