首页 > 解决方案 > 一个模型必须链接到另一个模型还是可以链接到基于相同模型的表?

问题描述

我正在尝试调试在 RoR 上运行的大型应用程序。在我的模型Text中,我有这种关系:

has_many :copies, :foreign_key => :original_id

这是否意味着我的应用程序中必须有另一个名为 Copie 的模型(应该是 Copy ...),它通过 链接到它,foreign_key或者它可能只是到另一个使用相同模型的表的链接Text

标签: ruby-on-railsactiverecord

解决方案


在大多数情况下,是的。会有一个Copy模型。class_name您可以通过使用选项将其指向不同的模型

通常,如果它引用了不同的表,class_name就会使用关键字。例如:has_many :copies, :class_name => 'YourOtherModel', :foreign_key => :original_id

按照惯例,Rails 假定用于保存另一个模型上的外键的列是该模型的名称,并添加了后缀 _id。

Rails 确实为您提供了直接设置 :foreign_key 选项的能力:

在此处查看文档

您还可以设计一个必须与自身相关的数据模型:

在此处查看文档

我希望这能为您提供一些见解以进一步调查


推荐阅读