Я хотел бы знать, возможно ли написать миграцию вместо следующего необработанного оператора SQL:
execute <<-SQL
ALTER TABLE records
ADD CONSTRAINT fk_records_domains
FOREIGN KEY (domain_id)
REFERENCES domains(id) ON DELETE CASCADE
SQL
Я бы не хотел использовать sql, потому что у меня возникают проблемы при откате такой миграции:
execute <<-SQL
ALTER TABLE records
DROP FOREIGN KEY fk_records_categories
SQL
rake db:rollback
== Integrity: reverting ======================================================
-- execute(" ALTER TABLE records\n DROP FOREIGN KEY fk_records_categories\n")
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Error on rename of './BlackshardDev/records' to './BlackshardDev/#sql2-44cc-16c' (errno: 152): ALTER TABLE records
DROP FOREIGN KEY fk_records_categories
Я знаю, что activerecord может обрабатывать ссылочную целостность, но я хотел бы иметь возможность управлять ею также с помощью бэкэнда.
Спасибо