こんにちは!kossyです!
さて、今回は、Object.has_many.has_manyという関連が組んである場合のデータ取得の方法を
ブログに残したいと思います。
環境
Rails 5.2.3
Ruby 2.5.1
MacOS Mojave
mapやflattenを使う!
「学生は講義をいっぱい持っていて、講義は科目をいっぱい持っている」とします。
Student has_many rectures
recture has_many subjects
ここで、
「その学生が持つ講義の科目を全て取得したい」とします。
その場合、
$ student = Student.first $ student.rectures.map{|rec| rec.subjects }.flatten
こうすることで実現可能です。
要件が変わって、
「その学生が持つ講義の科目名を全て取得したい」となっても、
$ student = Student.first $ student.rectures.map{|rec| rec.subjects }.flatten.pluck(:name)
とすることで対応可能です。