有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
상대방의 관계는 이렇습니다.
문서 1n 섹션
섹션 1n 단락
문서와 섹션은 일대다 관계이고, 섹션과 단락은 일대다 관계입니다. Document에는 여러 개의 단락이 있지만 직접적인 관련이 없으므로 섹션 연관을 통해 연결되어 있다고 결론을 내릴 수 있습니다. 이것이 트로프가 하는 일입니다