2017-06-01 7 views
0

私は3つのモデルがあります:Writer、Book、Page。railsすべての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を呼び出すときにエラーが表示されます。 pagesは、BookまたはWriterオブジェクト(コレクションではない)から呼び出す必要があります。

だから、あなたの団体は、例えば、のような完全であると仮定:

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 

あなたが得るこのように、Writerに直接pagesを呼び出すことができる必要があります:

Writer.first.pages 
関連する問題