我有一个Order
班has_many :shipments
。如何使用Order.find
返回在特定时间(例如最后一小时)之后创建最新货件的所有订单对象?
答案 0 :(得分:2)
Order.find(
:all,
:joins => :shipments,
:select => 'distinct orders.*',
:conditions => ['shipments.created_at > ?', Time.now - 1.hour])
:joins
可确保您获得有货件的订单,而:conditions
可确保您只获得过去一小时内创建的货件。
:select
表示您只获得每个订单的一个实例,以防订单在过去一小时内有多个通知。
我不确定“最新”规定是否重要,因为如果在最后一小时内创建了任何货件,那么最新货件也将符合该条件。