2016-07-26 20 views
2

在Rails 4模型中,我想模擬員工與部門的關係。一名員工屬於一個部門和一個部門has_many的員工。我可以在員工表中創建一個department_id引用而不必將其作爲外鍵嗎?Rails:創建不帶外鍵的列引用

我想這樣做的原因是,我懷疑這會影響MySQL中的記錄鎖定行爲,這是我正在使用的數據庫,當我從多個線程執行併發更新時,可能會導致隨機錯誤Rails應用程序。

回答

1

是的,你可以。如果您在遷移中使用Rails 4.2並使用referencesadd_reference,只需將:foreign_key選項設置爲false即可。

您也可以採用@ user1063998所描述的方法,只需將名爲department_id的整數列添加到您的employees表中即可,但在這種情況下,我還建議爲此列添加索引。

1

默認情況下,Rails不會在數據庫級別添加外鍵約束。

使用遷移,您可以簡單地將一個整數列添加到名爲department_id的員工表中。如果您需要模仿外鍵約束的行爲,則可以在模型上使用驗證。