В этой (упрощенной) системе
class Order
has_one :bill
...
end
class Bill
has_many :rebills
belongs_to :order
...
end
class Rebill
belongs_to :bill
...
end
И Bill
, и Rebill
имеют столбец status
, который может находиться в одном из множества состояний, некоторые равны успеху инекоторые из них равны неудаче.
В настоящее время я пытаюсь найти все записи Order
, которые не имеют какой-либо успешной оплаты.Заказ соответствует моим критериям, если соответствующая запись Bill
находится в состоянии сбоя и что Bill
записи имеют нет связанных Rebill
записей, которые находятся в успешном состоянии.
Если у Order
есть Bill
, который вышел из строя, Rebill
, который также не прошел, и вторая Rebill
, которая прошла успешно, тогда Order
выплачено, и я незаинтересованы в этом.
Если Order
имеет Bill
, который не прошел, и не связан Rebills
, то у него нет успешного платежа, и я am заинтересован в нем.
Если у Order
есть Bill
, который вышел из строя, и любое число Rebills
в состоянии сбоя (но не одно в успешном состоянии), то нет успешного платежа, и я am заинтересован в этом.
Поэтому мой вопрос: как построить запрос, который возвращает все Order
записи, которые не имеют какой-либо успешный платеж?Реальная проблема здесь заключается в том, что я держу понятие успешного платежа в нескольких местах, что плохо.Тем не менее, я чувствую, что я должен быть в состоянии шептать правильное заклинание SQL, чтобы сделать это, но число объединений, где, наличие и количество вводит меня в заблуждение до предела!
Любой, кто-либо знает, что япытаясь сделать здесь, и если да, то есть мысли, как я могу это сделать?