можно также установить: зависимая опция к: delete_all.: delete_all выпустит единственный SQL-оператор для удаления всех дочерних записей. из-за этого использования: delete_all может дать Вам лучшую производительность.
has_many :memberships, dependent: :delete_all
Да Вы можете при использовании отношений как has_many, Вы просто делаете это
has_many :memberships, dependent: :destroy
Просто имейте в виду, что delete_all не выполнит обратных вызовов (как before_destroy и after_destroy) на дочерних записях.
Похоже, что этот плагин мог бы дать Вам, что Вы ищете, если Вы хотите расположение каскадом, удаляет отраженный в фактической структуре базы данных:
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