有 3 个模型,document, section, paragraph。 d = Document.new 直接执行 d.sections.to_sql 或者 d.paragraphs.to_sql 或者是 d.sections.to_sql 会报错,因为没有关联。
现在把他们关联了,(我测试后发现添加了 has_many 后显示的 d.sections.to_sql 或者是其他模型.to_sql 在添加 through 关系前和后打印都是一样的),那么我就不知道这个 through 到底有什么用?不是多余的吗?
添加了如下关系后,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