我有以下型号
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中提取条形码记录。
答案 0 :(得分:2)
您是否尝试过这种方法(例如,计算第一个书架中第一批教师的第一本书的条形码):
b = Bookrack.first.faculties.first.books.first.barcodes.count
答案 1 :(得分:1)
这应该有帮助..
Bookrack.rb
has_many :faculties
has_many :books, through: :faculties
has_many :barcodes, through: :books
然后就可以了,
Bookrack.find(1).barcodes.count
另外要注意的是,has_many
关系必须是复数,你的模型似乎不合适..如果它是一个错字就纠正它。
答案 2 :(得分: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