Rails 应用程序中的引用完整性
Referential integrity in Rails applications
我是 rails 的新手,来自 Symfony(其灵感来自 Rails)。
我习惯于完整地定义我的数据库模式,并确保我的表是 3NF,必要时是 4NF 等等。
我找不到在数据库级别明确指定 CONSTRAINTS 的方法,在网上搜索后,我看到了几个帖子,例如这个:Hacked Ref Integrity,这让我感到非常惊讶。
诚然,我链接到的文章已经很老了,希望现在情况会有所改善。
rails 中(显然?)缺少 RI 使得整个框架与受其启发的 Symfony 相比显得相当业余。
请说不是这样...
rails 的最初方法是将此责任放在应用程序域中。这是一个有意识的妥协,如果你寻找它,你会发现很多关于它的讨论
然而,由于越来越多的开发人员表达了您的担忧,因此确实发展了多种方法来识别数据库在其中的作用。
正如您提到的文章also shows,您实际上可以在正常迁移的迁移中显式指定很多约束:
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
add_foreign_key :articles, :authors
或者您可以更进一步,使用像 schmea plus gem
这样的扩展
我是 rails 的新手,来自 Symfony(其灵感来自 Rails)。
我习惯于完整地定义我的数据库模式,并确保我的表是 3NF,必要时是 4NF 等等。
我找不到在数据库级别明确指定 CONSTRAINTS 的方法,在网上搜索后,我看到了几个帖子,例如这个:Hacked Ref Integrity,这让我感到非常惊讶。
诚然,我链接到的文章已经很老了,希望现在情况会有所改善。
rails 中(显然?)缺少 RI 使得整个框架与受其启发的 Symfony 相比显得相当业余。
请说不是这样...
rails 的最初方法是将此责任放在应用程序域中。这是一个有意识的妥协,如果你寻找它,你会发现很多关于它的讨论
然而,由于越来越多的开发人员表达了您的担忧,因此确实发展了多种方法来识别数据库在其中的作用。
正如您提到的文章also shows,您实际上可以在正常迁移的迁移中显式指定很多约束:
http://guides.rubyonrails.org/active_record_migrations.html#foreign-keys
add_foreign_key :articles, :authors
或者您可以更进一步,使用像 schmea plus gem
这样的扩展