2016-10-13 1 views
2

У меня есть 3 модели A, B и C. B - таблица соединений между A & C. Ассоциация создана через has_many :through.Должны ли мы писать зависимые: destroy на модели таблицы соединений?

Мне было интересно, если модели non-join-table (A & C в моем случае) должны иметь dependent: :destroy с объединенной таблицей ассоциации или если она бережно берется за рельсы?

Это тот же ответ для ассоциации HABTM?

ответ

2

Нет, потому что вы можете удалять записи без создания экземпляров, которые не будут вызывать зависимый от уничтожения, и вы останетесь с потерянными документами.

Например delete_all

Вместо если добавить внешний ключ базы данных будет обрабатывать удаления, и это не имеет значения, если вы экземпляр объекта или нет.

Например, в миграции вы можете добавить

def change 
    add_foreign_key :as, :bs, on_delete: :cascade 
end 

Или в миграции создания таблицы

t.belongs_to :a, foreign_key: { on_delete: :cascade } 
+0

Действительно, я просто проверял в консоли, не нужно указать '' 'зависимый:: destroy''' для таблицы соединений '' 'has_many''', рельсы, по-видимому, заботятся об уничтожении соответствующих данных в таблице соединений автоматически. –

Смежные вопросы