ruby - 資料關聯 through,到底用什麼用?
PHP中文网
PHP中文网 2017-04-24 09:09:54
0
1
624

有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)
洪涛

你對象的關係是這樣的:

Document 1 n Section
Section 1 n Paragraph

Document 和 Section 有一對多的關係,Section 和 Paragraph 有一對多的關係。從而可以得出 Document 有多個 Paragraph,但是他們兩個沒有直接的關係,所以透過(through) Section 關聯讓他們聯繫起來。這就是 trough 的作用

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板