我有两个表:装运和清单。
- 发货:id,名称
- 清单:id、shipment_id、start_time、end_time
一个装运有_多个舱单,而一个舱单属于_一个装运。
我如何编写一个ActiveRecord范围,它会返回我所有的发货,其中:
- 如果它至少有一个清单,则当前时间介于开始时间和结束时间之间,或
- 它没有清单
嗨,我不确定它是否可以通过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