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

79
задан Peter DeWeese 21 February 2019 в 18:54
поделиться

4 ответа

можно также установить: зависимая опция к: delete_all.: delete_all выпустит единственный SQL-оператор для удаления всех дочерних записей. из-за этого использования: delete_all может дать Вам лучшую производительность.

has_many :memberships, dependent: :delete_all
95
ответ дан thomasfedb 24 November 2019 в 10:08
поделиться

Да Вы можете при использовании отношений как has_many, Вы просто делаете это

has_many :memberships, dependent: :destroy
66
ответ дан Dorian 24 November 2019 в 10:08
поделиться

Просто имейте в виду, что delete_all не выполнит обратных вызовов (как before_destroy и after_destroy) на дочерних записях.

10
ответ дан Jarin Udom 24 November 2019 в 10:08
поделиться

Похоже, что этот плагин мог бы дать Вам, что Вы ищете, если Вы хотите расположение каскадом, удаляет отраженный в фактической структуре базы данных:

http://www.redhillonrails.org/foreign_key_migrations.html

Формат для использования этого в миграции был бы чем-то вроде этого:

create_table :orders do |t|
  t.column :customer_id, :integer, :on_delete => :set_null, :on_update => :cascade
  ...
end
6
ответ дан Sean McMains 24 November 2019 в 10:08
поделиться
Другие вопросы по тегам:

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