搜索
ruby - 数据关联 through,到底用什么用?
PHP中文网
PHP中文网 2017-04-24 09:09:54
[Ruby讨论组]

有3个模型,document, section, paragraph。

d = Document.new

直接执行 d.sections.to_sql 或者 d.paragraphs.to_sql或者是 d.sections.to_sql会报错,因为没有关联。

问题1:

现在把他们关联了,(我测试后发现添加了has_many后显示的d.sections.to_sql或者是其他模型.to_sql在添加through关系前和后打印都是一样的),那么我就不知道这个through到底有什么用?不是多余的吗?

问题2:

添加了如下关系后,d.section.to_sql报错,为什么会出现这样的错误?

irb(main):008:0> d.sections
SystemStackError: stack level too deep
class Document < ActiveRecord::Base
    has_many :paragraphs, through: :sections
    has_many :sections 
end

class Paragraph < ActiveRecord::Base
     belongs_to :section
end

class Section < ActiveRecord::Base
     belongs_to :document
  has_many :paragraphs
end
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
PHP中文网

你对象的关系是这样的:

Document 1 n Section
Section 1 n Paragraph

Document 和 Section 有一对多的关系,Section 和 Paragraph 有一对多的关系。从而可以得出 Document 有多个 Paragraph,但是他们两没有直接的关系,所以通过(through) Section 关联让他们联系起来。这就是 trough 的作用

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号