You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RoR框架中Text模型的has_many关联是否可绑定同一模型而非其他模型?

两种场景分别说明

  1. 默认无额外配置的情况
    你给出的原始代码默认要求存在名为Copy的模型:Rails的has_many关联会默认将关联名自动单数化后匹配对应的模型类,:copies经过单数化处理后得到的类名是Copy,因此默认会尝试绑定Copy模型对应的数据表(默认为copies表),通过你指定的original_id外键关联到Text模型的主键。
  2. 指向同模型同表的自关联场景
    不需要额外的Copy模型,只要你手动指定class_name参数明确关联对应的模型为Text即可,调整后的代码如下:
has_many :copies, class_name: "Text", foreign_key: :original_id

这种实现下所有数据都存储在Text模型对应的texts表中,original_id字段用来标记该记录所属的原文本ID,完全不需要额外建表或新增模型。如果需要配置反向关联,可以在Text模型中补充:

belongs_to :original, class_name: "Text", optional: true

配置完成后你可以直接调用:

  • @text.copies 获取该文本对应的所有副本记录
  • @text.original 获取该副本对应的原文本记录

内容的提问来源于stack exchange,提问作者Maxime

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:12:04