我正在调试一个运行在RoR上的大型应用程序。在我的模型Text
中,我有这样的关系:
has_many :copies, :foreign_key => :original_id
这是否意味着在我的应用程序中必须有另一个模型称为复制(应该是复制…),它通过foreign_key
链接到它,或者它可能只是一个链接到另一个表,使用相同的模型Text
?
在大多数情况下,是的。有一个Copy
模型。您可以通过使用class_name
选项
将其指向不同的模型通常,如果它有对另一个表的引用,则会使用class_name
关键字。例如:has_many :copies, :class_name => 'YourOtherModel', :foreign_key => :original_id
按照惯例,Rails假定用于保存另一个模型上的外键的列是该模型的名称,并添加了后缀_id。
Rails提供了直接设置:foreign_key选项的能力:
查看这里的文档
你也可以设计一个数据模型,使其与自身相关:
查看这里的文档
我希望这能给你提供一些进一步调查的洞察力