其他人如何在迁移中建立外键关系

时间:2009-03-31 18:12:01

标签: ruby-on-rails database

我正在使用Ruby on Rails开发一些东西,我现在有几个模型,它们之间有关系。现在,模型指定了关系,所以我知道RoR会强制执行完整性,但在数据库级别呢?

其他人是否在数据库表中设置了外键关系?如果是这样,怎么样?,似乎没有任何方法可以在迁移中设置/销毁数据库关系(可能使用原始SQL)

由于

保罗。

3 个答案:

答案 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之外,没有办法实现迁移,这意味着:

  1. 这是特定于数据库的
  2. 您必须使用SQL
  3. 第一个并不是那么大的交易(无论如何你在项目中频繁切换数据库?),第二个只是生活中的一个事实。所以,如果你愿意,可以使用它们。

答案 2 :(得分:-1)

顺便说一下,应始终在数据库级别设置这些内容。除应用程序外,还有其他方法可以访问和更改数据库中的数据。除非您想要无用的数据,否则不应在应用程序中设置这些类型的规则。所有涉及数据完整性的事情都必须在数据库级别,即使您必须(GASP)使用SQL。