我正在使用Ruby on Rails开发一些东西,我现在有几个模型,它们之间有关系。现在,模型指定了关系,所以我知道RoR会强制执行完整性,但在数据库级别呢?
其他人是否在数据库表中设置了外键关系?如果是这样,怎么样?,似乎没有任何方法可以在迁移中设置/销毁数据库关系(可能使用原始SQL)
由于
保罗。
答案 0 :(得分:2)
以下是如何操作的指南: http://seb.box.re/2006/7/29/foreign-key-and-rails-migration
这里还有一个插件: http://github.com/harukizaemon/foreign_key_migrations/tree/master
但是,由于某种原因,Rails不容易在迁移中支持外键。基本上,在使用ActiveRecord时,它们并不是必需的。
以下是一个很好的解释,说明为什么它们没有必要,并且不鼓励它们在轨道中使用:http://www.motionstandingstill.com/i-dont-use-foreign-key-constraints-with-rails/2008-10-17/
有关此主题的意见不同。这里有一个很好的讨论:http://forum.softiesonrails.com/forums/3/topics/138
答案 1 :(得分:0)
除了使用SQL之外,没有办法实现迁移,这意味着:
第一个并不是那么大的交易(无论如何你在项目中频繁切换数据库?),第二个只是生活中的一个事实。所以,如果你愿意,可以使用它们。
答案 2 :(得分:-1)
顺便说一下,应始终在数据库级别设置这些内容。除应用程序外,还有其他方法可以访问和更改数据库中的数据。除非您想要无用的数据,否则不应在应用程序中设置这些类型的规则。所有涉及数据完整性的事情都必须在数据库级别,即使您必须(GASP)使用SQL。