Как уничтожить все данные ассоциации между двумя моделями? (Начинающий рельс) - PullRequest
9 голосов
/ 07 ноября 2011

У меня есть две модели: store и category с соединительным столом под названием categories.stores.

Как я могу удалить все данные отношений для объекта хранилища в присоединяющейся таблице?

Могу ли я использовать что-то вроде этого:

store.categories.destroy или category.stores.destroy

Примечание: обе модели has_and_belongs_to_many (и поэтому имеют без идентификатора для каждой записи ассоциации - только store_id и category_id)

1 Ответ

9 голосов
/ 07 ноября 2011

В ассоциации has_and_belongs_to_many вы можете использовать delete_all или destroy_all.

В ассоциации has_many вам следует рассмотреть возможность использования delete_all, поскольку она удаляет записи, следуя стратегии :dependent(по умолчанию он обнуляет внешние ключи) вместо destroy_all, который уничтожает связанные записи.

Подробнее в http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Delete+or+destroy%3F

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