Хранение прошлых отношений в рельсах - PullRequest
0 голосов
/ 01 июля 2011

У меня есть система отслеживания товаров, в которой есть модель товара, которая имеет отношение один-ко-многим с инвойсом.Это означает, что в одном счете может быть много элементов, и элемент может принадлежать одному счету.

Теперь я столкнулся с необходимостью вернуть Товар на склад, что для моей системы означает установку доставленного логического поля обратно на false, но если я не установлю invoice_id равным nil, он все равно будет отображаться как ожидающий доставки клиенту, и если я сделаю ноль, то в моей системе не будет записей о выставлении счетов клиенту за этот товар.

Единственный способ, с помощью которого я могу убедиться, что это работает хорошо, - это иметь поле previous_invoices, в котором хранятся идентификаторы накладных, в которых оно было.Выполнение этого будет работать с точки зрения элементов Item.previous_invoices будет иметь смысл, но не будет отображаться в Invoice.items и для получения возвращенных элементов мне потребуется выполнить поиск в БД с условием LIKE.

Я бы предпочел не использовать ассоциацию «многие ко многим», поскольку только малая часть возвращаемых предметов должна использовать таблицу.

Есть ли возможность сделать это в рельсах илис драгоценным камнем, который может обрабатывать находки с обеих сторон?

1 Ответ

1 голос
/ 01 июля 2011

Отношение между Счетом-фактурой и Предметом составляет многие-ко-многим, и вы просто создаете себе трудности, избегая реализации этого как такового. Самым чистым решением является таблица InvoiceItems с чем-то вроде «возвращенного» поля, которое вы будете проверять при извлечении элементов счета-фактуры, возможно, с условием связи HABTM счета-фактуры с элементами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...