外键和accepts_nested_attributes_for之间有什么区别

时间:2014-07-02 22:48:51

标签: ruby-on-rails foreign-keys

正如标题所说,我不知道foreign_keyaccepts_nested_attributes_for之间的真正差异。我已经google了一下,阅读了API文档。但差异尚不清楚。

1 个答案:

答案 0 :(得分:0)

标记accepts_nested_attributes描述了一个模型,它会影响模型的外观。选项:foreign_key根据使用它的关联创建DBMS外键,从而影响表的外观。

当T中的(c,...)子行的值有时,表T列(c,...)中有一个外键引用/表U列(d,...)作为U的(d,...)子行的值出现,每个这样的U子行在U中是唯一的。这意味着相应的模型将具有那些字段和模型T的对象,其具有一些字段值(c, ...)将只有一个模型U的相应对象,其中包含字段(d,...)的值。告诉DBMS,它允许它检查更新并优化查询。

模型将希望在表上存在这样的约束和/或利用这种约束。他们将根据需要创建外键(例如,在belongs_to中)或提供或不提供方法(例如,返回一个值而不是一组值)。

拥有外键与accepts_nested_attributes相关,因为这允许您使用方法来更新另一个类中的对象,该对象与其具有多对一关系。但是出于其他原因可能存在外键。如果没有外键,你可以拥有多对一的关系,因为目标列可能不是唯一的表。