Ruby on Rails 3 - 编写具有连接和"OR"条件的活动记录作用域



我有两个表:装运和清单。

  • 发货:id,名称
  • 清单:id、shipment_id、start_time、end_time

一个装运有_多个舱单,而一个舱单属于_一个装运。

我如何编写一个ActiveRecord范围,它会返回我所有的发货,其中:

  1. 如果它至少有一个清单,则当前时间介于开始时间和结束时间之间,
  2. 它没有清单

嗨,我不确定它是否可以通过ruby中的作用域实现,它可能是类似的东西

   shipments = Shipments.all( :include => :manifests )
   empty_shipments = shipments.select { |item| item.manifests.blank? }
   non_empty_shipments = shipments - empty_shipments
   non_empty_shipments.delete_if {|item| (item.t_start..item.t_end).cover? Time.now}
   empty_shipments & non_empty_shipments

最新更新