Rails:创建没有外键的列引用

时间:2016-07-26 21:35:34

标签: mysql ruby-on-rails

在Rails 4模型中,我想建立一个员工 - 部门关系模型。员工属于部门,部门有多个员工。我可以在employee表中创建department_id引用而不将其作为外键吗?

我想这样做的原因是我怀疑这会影响MySQL中的记录锁定行为,这是我正在使用的数据库,当我从Rails中的多个线程执行并发更新时,它可能会导致随机错误应用

2 个答案:

答案 0 :(得分:1)

默认情况下,Rails不会在数据库级别添加外键约束。

使用迁移,您只需将一个整数列添加到名为department_id的employee表中。如果需要模仿外键约束的行为,可以在模型上使用验证。

答案 1 :(得分:1)

是的,你可以。如果您在迁移中使用Rails 4.2并使用referencesadd_reference,只需将bool ContainsBracketsWithString = AssertionValue.All(a => CredentialTypeDescription.Any(b => a.Field1 == b.Field1 ) ); Assert.False(ContainsBracketsWithString); 选项设置为false。

你也可以采用@ user1063998描述的方法,只需在你的员工表中添加一个名为:foreign_key的整数列,不过在这种情况下,我建议你也为这一列添加一个索引。