2014-07-02 77 views
0

有什麼區別正如標題所說,我不知道foreign_keyaccepts_nested_attributes_for之間的真正區別是什麼。我搜索了一下並閱讀了API文檔。但差別不明。外鍵和recep_nested_attributes_for

+1

我不知道他們之間有任何相似之處。 – San

+0

不一定說有相似之處。它似乎可以使用foreign_key而不是accept_nested_attributes_for ...但我不知道爲什麼我不能。 – funfuntime

+2

兩者是完全不同的.'foreign_key'用於實現兩個或多個模型之間的'關係'.Ancept_nested_attributes_for'允許您通過父節點將'attributes'保存在'關聯記錄'上。 – Pavan

回答

0

標記accep_nested_attributes描述了一個模型,它對模型的外觀有影響。選項:foreign_key根據使用它的關聯創建DBMS外鍵,從而影響表的外觀。

我們說,當(c,...)在T中子元素的值在T列(c,...)中引用/到表U列(d,...)時存在外鍵必須顯示爲U的(d,...)個子行的值,並且每個這樣的U個子行在U中都是唯一的。這意味着相應的模型將具有這些字段和模型T的一個對象,其中某些值爲字段(c ,...)將只有一個模型U的對應對象與字段(d,...)的值。告訴DBMS,它可以檢查更新並優化查詢。

模型會希望在表格上存在這樣的約束和/或利用這樣的約束。他們將創建外鍵(例如在belongs_to中)或者根據需要提供或不提供方法(例如,返回一個值而不是一組值)。

擁有一個外鍵與accept_nested_attributes相關,因爲它允許您使用方法更新另一個類中具有多對一關係的對象。但是外鍵可能會因其他原因而存在。而且,如果沒有外鍵,您可以擁有多對一的關係,因爲目標列可能不是唯一的表。