У меня есть приложение Rails с двумя моделями: SalesTransactions и PurchaseOrders.
В модели PurchaseOrders новые записи регистрируются с использованием поля purchase_order_number в качестве ключевого поля.Я использую метод создания модели, чтобы найти, был ли ранее зарегистрирован этот «purchase_order_number», и, если это так, повторно использовать эту запись и использовать ее идентификатор в записи SalesTransaction.Если это имя еще не было зарегистрировано, я продолжаю создавать, а затем использую новый идентификатор записи PurchaseOrder в SalesTransaction (Foreign_id, ссылающийся на связанный заказ).
Обратите внимание, что я неиметь существующий идентификатор записи PurchaseOrder до тех пор, пока я не выполню поиск в методе создания (так что это не вопрос «как обновить запись, используя« accepts_nested_attributes_for »?», я могу это сделать, когда у меня будет идентификатор).
В некоторых ситуациях мое приложение записывает новую SalesTransaction и одновременно создает новый PurchaseOrder.Он использует accepts_nested_attributes_for для создания записи PurchaseOrder.
Проблема заключается в том, что при использовании 'accepts_nested_attributes_for' create не вызывается, и поэтому моя модель не имеет возможности перехватить create и искать, если'purchase_order_number' уже зарегистрирован и обрабатывает этот случай.
Буду признателен за предложения о том, как перехватить создания 'accepts_nested_attributes_for', чтобы разрешить некоторую предварительную обработку (т. е. посмотреть, если запись PurchaseOrder с этим номеромуже существует, и если это так, используйте его.)
Не у всех Sales есть параметр PurchaseOrder, поэтому запись PurchaseOrder является необязательной в рамках SalesTransaction.
(я видел kludge, включающий: reject_if, но это не позволяет мне добавить существующий идентификатор записи в качестве Foreign_id в родительской записи.)
Спасибо.