外键限制不会在rake期间复制到testdb中

时间:2011-03-15 06:18:04

标签: ruby-on-rails oracle rake

这是一个我无法调试的问题。执行rake db:test:clone_structure时,未从开发数据库复制到测试数据库的外键。有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

你的问题是Rails(或ActiveRecord)不理解数据库中的外键,也不理解CHECK约束或其他比唯一索引更好的东西。 Rails通常很好用,但有时在Rails中有更多的态度而不是良好的感觉。

Foreigner用于向ActiveRecord添加FK支持,但不了解Oracle。您可能能够将PostgreSQL支持调整为Oracle,但我不了解Oracle,因此这可能不是一个好主意。 Foreigner也不支持CHECK约束。

快速解决方案是将FK和CHECK作为原始SQL转储并将SQL泵入您的测试和生产数据库。然后用一个快速脚本包围rake db:test:clone_structure后面的原始SQL FK和CHECK复制。

很抱歉没有简单的方法可以做到这一点,但是一旦你超出了框架想要做的事情的范围就会变得丑陋(而且框架越全面,事情变得更加丑陋)。通常的rake命令包含的一些SQL争论并不是那么令人讨厌。