2017-06-01 98 views
0

我有3個型號:作家,書,頁。導軌訪問所有has_many通過記錄

Writer has_many :books 
Writer has_many :pages, through: :books 
Book has_many :pages 

我想顯示所有屬於通過這本書作家的頁面,但它給出了一個錯誤:

Writer.first.books #=> works, shows all writer books 
Book.first.pages #=> works, shows all book pages 
Writer.first.books.pages #=> does not work, must in theory display all pages that belong to the writer 

什麼是顯示所有網頁的最佳方式,使用each do |x|除外?

回答

0

Writer.first.books是一個集合,將顯示第一個Writer中的所有書籍,這就是爲什麼在調用pages時看到錯誤的原因;需要從BookWriter對象(不是集合)調用pages

因此,假設您的關聯是完全一樣,例如:

class Writer < ApplicationRecord 
    has_many :books 
    has_many :pages, through: :books 
end 

class Book < ApplicationRecord 
    belongs_to :writer 
    has_many :pages 
end 

class Page < ApplicationRecord 
    belongs_to :book 
end 

,你應該能夠得到直接調用pagesWriter,像這樣:

Writer.first.pages