Написание области ActiveRecord с соединением и условием «ИЛИ» - PullRequest
0 голосов
/ 30 июня 2011

У меня есть две таблицы: отгрузки и манифесты.

  • отгрузки: идентификатор, имя
  • манифесты: id, идентификатор отгрузки, start_time, end_time

У Отправки есть Множество Манифестов, и Манифест принадлежит_ одной Отправке.

Как мне написать область ActiveRecord, которая возвращает мне все Отправления, где:

  1. , если у него есть хотя бы один манифесттекущее время находится между временем начала и окончания, ИЛИ
  2. оно не имеет манифестов

1 Ответ

0 голосов
/ 30 июня 2011

Привет, я не уверен, что этого можно достичь с помощью областей в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...