在Rails 4模型中,我想建立一个员工 - 部门关系模型。员工属于部门,部门有多个员工。我可以在employee表中创建department_id引用而不将其作为外键吗?
我想这样做的原因是我怀疑这会影响MySQL中的记录锁定行为,这是我正在使用的数据库,当我从Rails中的多个线程执行并发更新时,它可能会导致随机错误应用
答案 0 :(得分:1)
默认情况下,Rails不会在数据库级别添加外键约束。
使用迁移,您只需将一个整数列添加到名为department_id
的employee表中。如果需要模仿外键约束的行为,可以在模型上使用验证。
答案 1 :(得分:1)
是的,你可以。如果您在迁移中使用Rails 4.2并使用references
或add_reference
,只需将bool ContainsBracketsWithString = AssertionValue.All(a =>
CredentialTypeDescription.Any(b =>
a.Field1 == b.Field1
)
);
Assert.False(ContainsBracketsWithString);
选项设置为false。
你也可以采用@ user1063998描述的方法,只需在你的员工表中添加一个名为:foreign_key
的整数列,不过在这种情况下,我建议你也为这一列添加一个索引。