2009-06-20 2 views
0

У меня есть класс Order, который has_many :shipments. Как я могу использовать Order.find для возврата всех объектов заказа, чья самая новая отгрузка была создана через определенное время (скажем, в последний час)?Найти все объекты, имеющие связанный объект с определенным свойством

ответ

2
Order.find(
    :all, 
    :joins => :shipments, 
    :select => 'distinct orders.*', 
    :conditions => ['shipments.created_at > ?', Time.now - 1.hour]) 

:joins гарантирует, что вы получаете заказы, поставки и :conditions гарантирует, что вы получите только поставки, созданные в течение последнего часа.

:select означает, что вы получаете только один экземпляр каждого заказа, если заказ имеет несколько уведомлений за последний час.

Я не уверен, что «новейшая» оговорка важна, поскольку, если какая-либо отгрузка была создана за последний час, то самая новая партия также будет соответствовать этому условию.

+0

«Я не уверен, что« новейшая »оговорка важна, поскольку, если какая-либо отгрузка была создана за последний час, то самая новая партия также будет соответствовать этому условию». - Ответ: Я идиот. –

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