Защитить удаление категории, когда с ней что-то связано

В категории много товаров, видео, музыки и т. д.

Когда рассматриваемая категория будет уничтожена, все, что с ней связано, будет уничтожено.

Конечно, я могу вручную реализовать метод #before_destroy ActiveRecord, но я думаю, что это не очень хорошее решение.

Есть ли какой-нибудь гем Rails, который проверяет объявленную связь моделей с категорией и предотвращает удаление, если с ней что-то связано?


person AntonAL    schedule 25.10.2011    source источник


Ответы (2)


Эта функциональность входит в стандартную комплектацию рельсов.

Используйте :depend => :restrict при объявлении вашей ассоциации.

Подробнее см. документ здесь: http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many

person Taryn East    schedule 25.10.2011
comment
вопрос в том, как предотвратить удаление, а не в том, как каскадировать его. - person John Beynon; 25.10.2011
comment
ах... просто перечитайте это и да, вы правы. Я запутался. Что ж, для этого тоже есть кое-что с зависимым =› :restrict - person Taryn East; 26.10.2011
comment
Вот почему я люблю ТАКОЕ - узнавать что-то новое каждый день! Хороший звонок! - person John Beynon; 26.10.2011

Вариант :dependent => :restrict делает именно это. Спасибо

person AntonAL    schedule 25.10.2011
comment
Если вы хотите быть абсолютно уверены, что этого никогда не произойдет (а вы должны!), добавьте ограничение базы данных. См. dev.mysql.com/doc/refman. /5.5/en/ или postgresql.org/docs/ 9.0/static/ddl-constraints.html - person Leonid Shevtsov; 25.10.2011