Буду признателен за некоторые идеи и советы, которые помогут согласовать дизайн моей модели с моей бизнес-логикой в приложении Rails 3.2.
У меня есть модель Продукта, модель Заказа, в которой есть много Ordered_Products, и модель Счет-фактуры, в которой есть много Sold_Products.
В форме «Заказ» пользователь устанавливает сведения о заказе, а затем добавляет вложенные Ordered_Products и их количества.
Форма счета-фактуры действует аналогичным образом.
Модель продукта имеет столбец запаса или количества, в котором записывается общее количество товаров, которые были в наличии.
Я хочу, чтобы запас изменялся при создании заказов и счетов, и я мог бы сделать что-то вроде after_create :decrement_product_stock
в модели Sold_Products, аналогично для Ordered_Products.
Здесь бизнес-логика вступает в игру. Заказы не выполняются сразу. Заказ может быть размещен, но не доставлен в течение некоторого времени. Запас не должен быть увеличен, пока запас не прибудет.
Таким образом, я мог бы добавить логическое значение order_fullfilled в форму Orders и запускать инкремент, только если order_fullfilled имеет значение true.
Но что если пользователю нужно вернуться в форму заказа, чтобы внести некоторые изменения. Когда они обновляют запись, метод приращения будет вызван снова, на этот раз с ошибкой?
То же самое произойдет, если счет нужно будет отредактировать.
Кто-нибудь сталкивался с подобной проблемой? Может ли кто-нибудь дать совет по вопросам, о которых я должен подумать здесь? Как лучше всего справиться с этим делом?
Ценю любые идеи. Спасибо!