У меня есть система отслеживания товаров, в которой есть модель товара, которая имеет отношение один-ко-многим с инвойсом.Это означает, что в одном счете может быть много элементов, и элемент может принадлежать одному счету.
Теперь я столкнулся с необходимостью вернуть Товар на склад, что для моей системы означает установку доставленного логического поля обратно на false, но если я не установлю invoice_id равным nil, он все равно будет отображаться как ожидающий доставки клиенту, и если я сделаю ноль, то в моей системе не будет записей о выставлении счетов клиенту за этот товар.
Единственный способ, с помощью которого я могу убедиться, что это работает хорошо, - это иметь поле previous_invoices, в котором хранятся идентификаторы накладных, в которых оно было.Выполнение этого будет работать с точки зрения элементов Item.previous_invoices будет иметь смысл, но не будет отображаться в Invoice.items и для получения возвращенных элементов мне потребуется выполнить поиск в БД с условием LIKE.
Я бы предпочел не использовать ассоциацию «многие ко многим», поскольку только малая часть возвращаемых предметов должна использовать таблицу.
Есть ли возможность сделать это в рельсах илис драгоценным камнем, который может обрабатывать находки с обеих сторон?