Как я могу сделать каскадное удаление в one_to_many отношениях в направляющих ActiveRecord?

Это действительно зависит от того, что Вы создаете.

не совсем неблагоразумно для веб-сервера привести одну пару запроса/ответа к сбою, но затем продолжить идти для дальнейших запросов. Необходимо было бы быть уверены, что одиночный отказ не имел неблагоприятных эффектов на глобальное состояние, однако - который будет хитрым битом. Учитывая, что отказ вызывает исключение в большинстве управляемых сред (например.NET и Java), я подозреваю, что, если бы исключение обработано в "пользовательском коде", это было бы восстанавливаемо для будущих запросов - например, если один запрос пытался выделить 10 ГБ памяти и отказавший, который не должен вредить остальной части системы. Если система исчерпывает память при попытке вручить от запроса пользовательскому коду, однако - такая вещь могла быть более противной.

5
задан Daniel Daranas 5 September 2013 в 09:39
поделиться

2 ответа

Ответ jdl правильный - вам необходимо добавьте : independent =>: destroy к обоим отношениям, то есть в вашем классе User добавьте его в has_many: orders и в свой Order , добавьте его в has_many: order_items .

Вы также можете изменить поведение MySQL в отношении внешних ключей, возможно, установив для них значение ON DELETE CASCADE .

10
ответ дан 18 December 2019 в 11:59
поделиться

Вам нужна опция : independent =>: destroy в has_many .

has_many docs

5
ответ дан 18 December 2019 в 11:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: