Найти все объекты, которые имеют связанный объект с определенным свойством - PullRequest
0 голосов
/ 20 июня 2009

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

1 Ответ

2 голосов
/ 20 июня 2009
Order.find(
  :all,
  :joins => :shipments, 
  :select => 'distinct orders.*', 
  :conditions => ['shipments.created_at > ?', Time.now - 1.hour])

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...