2017-06-21 79 views
1

指望我有以下型號Retrive記錄從的has_many關係

Bookrack.rb 
has_many :faculties 

Faculty.rb 
belongs_to :bookrack 
has_many :books 

Book.rb 
belongs_to :faculty 
has_many :barcodes 

Barcode.rb 
belongs_to :book 

我有一個控制器名稱書架控制器。我可以使用循環和空數組提取條碼在Bookrack中的記錄。有沒有更簡單的方法從Bookrack中提取條形碼記錄。

回答

1

這也許應該幫助..

Bookrack.rb

has_many :faculties 
has_many :books, through: :faculties 
has_many :barcodes, through: :books 

然後你就可以做,

Bookrack.find(1).barcodes.count 

另外需要注意的是,has_many關係必須是多元的,你的模型似乎不合適..或糾正它,如果它是一個錯字..

+0

非常感謝。你節省了我的時間 –

2

你試試這個(例如在第一書架計數的第一本書的條形碼在第一教師):

b = Bookrack.first.faculties.first.books.first.barcodes.count 
1

有了這樣的關係進行建模:

# app/models/bookrack.rb 
has_many :faculties 

# app/models/faculty.rb 
belongs_to :bookrack 
has_many :books 

# app/models/book.rb 
belongs_to :faculty 
has_many :barcodes 

# app/models/barcode.rb 
belongs_to :book 

你可以在「嵌套」方式使用joins

Bookrack.joins(faculties: [books: :barcodes]).count 
# => SELECT COUNT(*) FROM "bookracks" 
# INNER JOIN "faculties" ON "faculties"."bookrack_id" = "bookracks"."id" 
# INNER JOIN "books" ON "books"."faculty_id" = "faculties"."id" 
# INNER JOIN "barcodes" ON "barcodes"."book_id" = "books"."id" 
# => 1 
相關問題