查找具有特定属性的关联对象的所有对象

时间:2009-06-20 16:12:53

标签: sql ruby-on-rails activerecord join

我有一个Orderhas_many :shipments。如何使用Order.find返回在特定时间(例如最后一小时)之后创建最新货件的所有订单对象?

1 个答案:

答案 0 :(得分:2)

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

:joins可确保您获得有货件的订单,而:conditions可确保您只获得过去一小时内创建的货件。

:select表示您只获得每个订单的一个实例,以防订单在过去一小时内有多个通知。

我不确定“最新”规定是否重要,因为如果在最后一小时内创建了任何货​​件,那么最新货件也将符合该条件。